您好我正在尝试生成一些随机数字,以后会转换为字符。问题是rand()生成的数字总是返回相同,尽管我使用时间(0)作为rand()的种子。
int randomNumber(int min, int max)
{
srand(time(0));
int rndm = (rand()%(max-min))+min;
cout<<rndm<<" ";
return 0;
}
假设我生成随机3次
int main()
{
randomNumber(0,5);
randomNumber(0,5);
randomNumber(0,5);
}
产生的数字将是1 1 1或2 2 2等。任何想法?感谢
答案 0 :(得分:3)
在每次调用rand
之前,您使用相同的种子重新播种伪随机序列,因为time
返回的值仅每秒更改一次。这导致你每次都得到相同的结果。
仅在程序开始时调用srand
一次。
更好的是,看一下C ++ 11 <random>
库,它有更复杂的生成器和访问&#34; true&#34;播种它们的随机数。