使用srand()生成随机数

Sah*_*een 0 c c++

我写了这个函数:

int getRandomNumber(int min,int max)
{
    srand(time(NULL));
    return rand()%(max-min+1);
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

 int x=getRandomNumber(0,2);
 int y=getRandomNumber(0,2);
Run Code Online (Sandbox Code Playgroud)

但我总是得到相同的x和y值,即x = y总是.
怎么解决?

luk*_*k32 7

srand意在初始化发电机.您应该在程序开始时初始化一次.然后打电话rand.

现在,每次调用该函数时都要初始化它.它之所以相同是因为你提供两次相同的参数srand.time(0)返回从纪元到当前时间的秒数.

基本上,每隔一次后续调用同一状态,重启生成器.如果让它运行3秒,你会看到3组不同的值.

你的公式也有些错误.你忘了转移它.

rand()%(max-min+1)+min

此外,如果您与c++您合作,可以从FreeNickname中获取建议并使用c++特定功能.