C标准库中提供了两个用于生成随机数的函数,rand()和srand()。头文件为stdlib.h(cstdlib)。
1、
int rand(void);
返回[0,RAND_MAX]内的一个伪随机数。该数通过一个算法获得,该算法每次返回一个随机数序列,而该序列由种子决定。所以为了产生不同的序列,种子必须不同,而种子的设置将会由srand()函数实现。
2、
void srand(unsigned int seed);
对于不同的种子,多次调用rand()会生成不同的随机数序列。而相同的种子会使得多次调用rand()生成相同的随机数序列。举个例子,
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { //srand((unsigned int)time(NULL)); printf("%d,%d",rand(),rand()); return 0; }
每当上述程序运行时,输出的结果都一样,因为种子没变(默认为1),所以每次情形多次调用rand()时产生的随机数序列都一样。
所以为了每次产生不同的随机数序列,去掉上述程序中的注释是个好方法。
3、一些用法
怎么得到[0,N)之间的伪随机数?
rand()%N;
怎么得到[a,b)之间的伪随机数?
rand()%(b-a)+a;
怎么取得[0,1]之间的伪随机浮点数?
rand()/(double)RAND_MAX;
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。