承接《vc++中如何产生随机数》,我们可以产生0~NUM之间的随机数,那么接下来考虑,如何产生负数随机数呢,如何产生任意一个区间的随机数呢?
#include <time.h>
void GetRangeRandom(int min, int max, int n)
{
//产生区间[min,max)的n个随机数
srand(time(NULL));
for (int i=0; i<n; i++)
{
int t = (double)rand() / (RAND_MAX + 1) * (max - min) + min;
printf("%6d/n",t);
}
}
void main()
{
GetRangeRandom(-100, 100, 10);
}
大体思路就是把rand()产生的整数在RAND_MAX + 1中的位置映射到区间[min,max)中去,RAND_MAX在函数库中定义好的,为65535,上述例子执行后如下图所示。