一.rand函数和srand函数
在c语言中比较常用的随机函数就是rand函数,它可以随机的产生0~rand_max的随机数,定义类型不同,最大值也不同,rand函数包含在头文件stdlib.h中。
#include#include int main() { int a=rand(); printf("%d",a); return 0; }
你会发现每次产生的随机数都是相同的,因为rand函数产生的随机数是伪随机数,是根据一个数按照某个公式推算出来的,这个数我们称之为“种子”,但是这个种子在系统启动后就是一个定值。
要想每次产生的随机数不一样,那么,我们就要用到srand函数。
如何产生随机数
#include#include #include int main(int argc, const char *argv[]) { // long t = time(NULL);//因为时间是不断变化,每次运行程序,时间变化了,随机的种子就变化了,序列就变化了 // srand(t); srand(time(NULL)); //初始化随机种子是 while(1) { int num = rand();//如果直接调用rand函数,得到的是伪随机数 printf("num is %dn",num % 35 + 1); sleep(1); } return 0; }
经典例题!!
1.随机生成一个1 - 10的数,让对方猜5次,如果猜对了,提示"congratulations !!" 如果猜错了,提示"bigger" 或 "smaller"
#include#include #include int main(int argc, const char *argv[]) { //1.要想生成随机数,必须先初始化随机种子 srand(time(NULL)); //生成一个随机数,给别人猜 int num = rand() % 10 + 1; int a,i;//用来保存输入猜的数 for(i = 0; i < 5; i++) { scanf("%d",&a); if(a == num) { printf("恭喜你,猜对了!!n"); break; } else if(a > num) { printf("大了!!n"); } else // a < num { printf("小了!!n"); } } return 0; }
2.中国福利彩票35选7
随机生成1-35内不重复的7个数字
然后让用户选择自己的一组号码
中奖规则:猜中
7个500万
6个100万
5个1万
4个5000
3个500
0,1,2个没中奖
//1. 生成7个中奖号码 int lotteryNum[7]//注意生成7个中奖号码,有可能重复, 中奖号检测去重
//2. 输入7个数,买彩票 int myMum[7]; //手动输入7个数
//3. 统计中奖个数
//4. 打印输出中奖信息
#include#include #include int main(int argc, const char *argv[]) { int i,j; int lotteryNum[7];//保存7个中奖号码 int myNum[7];//保存购买的7个中奖号码 int count = 0;//用来统计中奖号码的个数 srand(time(NULL));//初始化随机种子 //1.生成7个随机的中奖号码 for(i = 0; i < 7; i++) { lotteryNum[i] = rand() % 35 + 1; for(j = 0; j < i; j++)//j代表,用当前刚生成的lotteryNum[i]与前面的已经生成的每一个号码做比计 { if(lotteryNum[i] == lotteryNum[j])//lotteryNum[i]代表的刚生成的号码 { // printf("出现一次重复号码!!n"); i--; //i-- 上面的再i++,i的值不变,重新在该位置生成一个随机数 break; } } } //2.输入7个数,购买彩票 for(i = 0; i < 7; i++) scanf("%d",&myNum[i]); //3.统计中奖个数 for(i = 0; i < 7; i++) { for(j = 0; j < 7; j++) { if(lotteryNum[i] == myNum[j]) { count++; } } } //4.根据中奖个数兑奖 printf("count is %dn",count); switch(count) { case 7: printf("500W!!n"); break; case 6: printf("100W!!n"); break; case 5: printf("10W!!n"); break; case 4: printf("5000!!n"); break; case 3: printf("500!!n"); break; default: printf("重在参与!!n"); } //调试程序 printf("中奖号码:"); for(i = 0; i < 7; i++) printf("%d ", lotteryNum[i]); printf("n"); printf("购买号码:"); for(i = 0; i < 7; i++) printf("%d ", myNum[i]); printf("n"); printf("中奖个数%d个!!n",count); return 0; }
接下来我会继续补充相关知识~~刚刚开始!!!



