1

我写了这个函数来产生一定范围内的随机数。我注意到当我包含一个负范围时,它似乎会产生更多的负数。例如 -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;
}
4

3 回答 3

5

所需的范围将是最高-最低,因此您需要编写如下表达式:

random_integer = lowest+(rand()%(highest-lowest));
于 2013-09-03T11:01:30.933 回答
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_castfloat结果到int

于 2013-09-03T11:02:40.917 回答
0

下一个表达式的结果是 [ 最低 .. 最高 ] 区间内的随机数

random_integer = lowest + ( rand( ) % (highest-lowest + 1) );
于 2013-09-03T11:09:04.080 回答