一.rand函数和srand函数
在c语言中比较常用的随机函数就是rand函数,它可以随机的产生0~rand_max的随机数,定义类型不同,最大值也不同,rand函数包含在头文件stdlib.h中。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=rand();
printf("%d",a);
return 0;
}
你会发现每次产生的随机数都是相同的,因为rand函数产生的随机数是伪随机数,是根据一个数按照某个公式推算出来的,这个数我们称之为“种子”,但是这个种子在系统启动后就是一个定值。
要想每次产生的随机数不一样,那么,我们就要用到srand函数。
如何产生随机数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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 %d\n",num % 35 + 1);
sleep(1);
}
return 0;
}
经典例题!!
1.随机生成一个1 - 10的数,让对方猜5次,如果猜对了,提示"congratulations !!" 如果猜错了,提示"bigger" 或 "smaller"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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 <stdio.h>
#include <stdlib.h>
#include <time.h>
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 %d\n",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;
}
接下来我会继续补充相关知识~~刚刚开始!!!