srand() 和 rand() 倾向于产生负数

srand() and rand() favors producing negative numbers

本文关键字:rand srand 倾向于      更新时间:2023-10-16

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

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

random_integer = lowest+(rand()%(highest-lowest));

您可以使用以下代码:

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;
}

只需从结果float static_castint

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

random_integer = lowest + ( rand( ) % (highest-lowest + 1) );