C语言知识点:rand()函数与srand()函数

C语言知识点:rand()函数与srand()函数
一、rand()
(1)rand()函数可生成伪随机数
rand()函数用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。
rand()会返回一个范围在0到RAND_MAX(至少是32767)之间的伪随机数(整数)。
(2)可通过srand()函数设置随机数种子来限定产生的随机数
在调用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。
随机种子相同,每次产生的随机数也会相同。

rand()函数需要的头文件是:

rand()函数原型:int rand(void);

使用rand()函数产生1-100以内的随机整数:int number1 = rand() % 100+1;

二、srand()

srand()函数需要的头文件仍然是:

srand()函数原型:void srand (usigned int seed);

srand()用来设置rand()产生随机数时的随机数种子。参数seed是整数,通常可以利用time(0)或getpid(0)的返回值作为seed。

使用rand()和srand()产生1-100以内的随机整数:

srand(time(0));

int number1 = rand() % 100+1;

三、使用rand()和srand()产生指定范围内的随机整数的方法

“模除+加法”的方法

因为,对于任意数,0<=rand()%(n-m+1)<=n-m

因此,0+m<=rand()%(n-m+1)+m<=n-m+m

因此,如要产生[m,n]范围内的随机数num,可用:

int num=rand()%(n-m+1)+m;

其中的rand()%(n-m+1)+m算是一个公式,记录一下方便以后查阅。

比如产生10~30的随机整数:

srand(time(0));

int a = rand() % (21)+10;

四、例题
使用C语言写出猜数字游戏,要求:(1)随机生成一个10到20之间的一个随机数;(2)根据用户输入的值,给出大小提示。
运行效果:
C语言知识点:rand()函数与srand()函数_第1张图片

参考代码:
#include
int main()
{
int num,guess;
srand((unsigned)time(NULL));
num = rand()%11+10;
do
{
printf(“please input your guess(10-20):”);
scanf(“%d”,&guess);
if(guess > num)
{
printf(“too big.\n”);
}else if(guess < num)
{
printf(“too samll.\n”);
}else
{
printf(“yes,so smart.\n”);
break;
}
}while(guess != -1);
printf(“game over.”);
return 0;
}

你可能感兴趣的:(编程语言,c++,算法,开发语言,c语言)