C ++随机数始终相同,即使时间(0)为种子

时间:2014-08-05 10:03:53

标签: c++ random

您好我正在尝试生成一些随机数字,以后会转换为字符。问题是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等。任何想法?感谢

1 个答案:

答案 0 :(得分:3)

在每次调用rand之前,您使用相同的种子重新播种伪随机序列,因为time返回的值仅每秒更改一次。这导致你每次都得到相同的结果。

仅在程序开始时调用srand一次。

更好的是,看一下C ++ 11 <random>库,它有更复杂的生成器和访问&#34; true&#34;播种它们的随机数。