rand()函数可以产生0到RAND_MAX(RAND_MAX是头文件<stdlib.h>中定义的符号常量)之间的随机整数。ANSI标准指出,RAND_MAX的值的范围至少必须是32767,即双字节整数的最大值。
(注意,实际上rand()函数产生的是伪随机数,每次执行这个程序时,产生的随机书的顺序是一样的。)
利用srand()可以程序每次执行后产生一组不同顺序的随机数。函数srand(unsigned)需要一个unsigned整型参数,在每次程序执行时使用rand()去生成一组不同的随机数
(注意:函数srand(unsigned)需要一个unsigned整型参数,在每次程序执行时使用rand()去生成一组不同的随机数,而不是代替rand函数来产生随机数):
#include <stdlib.h>
#include <stdio.h>
int main ()
{
int i;
unsigned seed;
printf ("ENTER seed:");
scanf ("%u",&seed);
srand (seed);
for (i = 1; i <= 10;i++)
{
printf ("%10d", 1 +(rand()% 6));
if ( i % 5 == 0)
printf ("\n");
}
return 0;
}
运行程序可以注意到,假定提供了不同的种子,那么每次程序运行时都会获得不同顺序的随机数。
如果希望无需每次都输入一个种子就能够进行随机化,那么可以使用语句:srand(time(NULL));
这会使得计算机读取自己的时钟获得种子值。函数time()能够在很短的时间内返回计算机当前时间,将其转换为无符号整数作为随机数产生的种子。函数time使用NULL作为参数,NULL能够取消对time函数调用的这种功能。
文章评论(0条评论)
登录后参与讨论