我写了这个函数:
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总是.
怎么解决?
srand意在初始化发电机.您应该在程序开始时初始化一次.然后打电话rand.
现在,每次调用该函数时都要初始化它.它之所以相同是因为你提供两次相同的参数srand.time(0)返回从纪元到当前时间的秒数.
基本上,每隔一次后续调用同一状态,重启生成器.如果让它运行3秒,你会看到3组不同的值.
你的公式也有些错误.你忘了转移它.
rand()%(max-min+1)+min
此外,如果您与c++您合作,可以从FreeNickname中获取建议并使用c++特定功能.