我写了这个函数来产生一定范围内的随机数。我注意到当我包含负范围时,它似乎会产生更多的负数。例如-5到5
我假设这不是随机的。这段代码有问题吗?
int random_number_generator(int lowest, int highest)
{
srand((unsigned)time(0));
int random_integer;
random_integer = lowest+(rand()%highest);
cout << random_integer << endl;
}
答案 0 :(得分:4)
所需范围最高 - 最低,因此您需要编写如下表达式:
random_integer = lowest+(rand()%(highest-lowest));
答案 1 :(得分:0)
您可以使用此代码:
int srandInit = 0;
float Random(float min, float max)
{
if (srandInit == 0)
{
srand ( (unsigned)time(NULL) );
srandInit = 1;
}
return ((max - min) * ((float)rand() / (float)RAND_MAX)) + min;
}
只需将static_cast
结果float
生成int
答案 2 :(得分:0)
下一个表达式的结果是[最低......最高]区间内的兰特数
random_integer = lowest + ( rand( ) % (highest-lowest + 1) );