C语言stdlib库中的rand()函数,用于返回一个随机数。
但是如果不指定随机数种子的话,种子总是会被设置为一个固定的值,导致每次得到的随机数序列都是相同的。
因此可以使用time(0)获取当前时间,并作为随机数种子,使得随机数种子总是不同,因此随机数序列也不相同。
使用rand()返回值与rand最大值的比值,与区间大小相乘,得到目标区间中相对应的随机数。
代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int RandInRange(int range_min, int range_max) //得到区间[min,max)中的随机数
{
return ((double)rand() / (RAND_MAX)) * (range_max - range_min) + range_min;
}
int main(void)
{
srand((unsigned)time(0)); //使用当前时间作为随机数种子
for (int i = 0; i < 10; i++) {
printf_s("%d\n", RandInRange(1,50));
}
return 0;
}
如果不使用时间作为种子的话,总是会输出如下结果: