C语言中有可以产生随机数的函数,需要添加 stdlib.h 头文件和 time.h 头文件。
srand((unsigned) time(NULL)); //初始化随机种子
for(int i = 0; i < 10; i++)
printf("%d ", rand());
其中,rand()函数只能产生[0, RAND_MAX]范围内的整数(RAND_MAX是stdlib.h中的一个常数)。
如果想要产生给定范围[a,b]内的随机数,需要使用 rand()%(b-a+1)+a。其中rand()%(b-a+1)的范围是[0,b-a],再加上a之后就是[a,b]。
若要生成大于RAND_MAX的随机数,则可使用下一种方法:
1.先用rand()生成一个[0,RAND_MAX]范围内的随机数
2.然后用这个随机数除以RAND_MAX,这样就能得到一个[0,1]范围内的浮点数
3.最后用这个浮点数乘以范围长度b-a+1,再加上a即可
(int)(round(1.0 * rand() / RAND_MAX * (right - left) + left))
即如上代码所示,可产生[left,right]范围内的随机数。