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

Mar*_*Lau 1 c++ random

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

kri*_*sku 5

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

random_integer = lowest+(rand()%(highest-lowest));
Run Code Online (Sandbox Code Playgroud)