随机数的生成在一个令人感兴趣的领域——模拟与电子游戏 应用广泛。如何生成随机数是C语言中一个重要的知识内容。
头文件:
功能:将产生一个在0到RAND_MAX之间的整数,RAND_MAX一般不小于32767.
(我们暂时假设得到每一个整数的概率相等)
n称为比例因子。
功能:产生 0 ~(n - 1)之间的整数。
p.s.为了得到我们需要的范围,通常在其后加m,m为范围起始数,n做范围大小
格式:
x = rand() % n + m;
我们发现,rand()产生的随机数不是真正的随机,事实上,它产生的是伪随机数,只有每次重新运行程序才能产生不同的整数数列。
在这里,我们用srand(seed)
来解决这个问题。
它需要一个unsigned
类型参数作为“种子”,控制函数rand()在每次被调用时就产生不同的随机数列。
为了不需要每次调用重新写入一个新的种子,我们利用如下语句:
srand(time(NULL));
time函数的函数原型在头文件中给出,其功能是将返回的时钟值以字符串的形式表现,但NULL将屏蔽掉这个功能。计算机会自动读取它自己的时钟值来做种子,而时间是不断变化的,这就实现了真正的随机。