rand() 即使与 srand( time(NULL) 也不起作用

rand() doesn't work even with srand( time(NULL) )

本文关键字:NULL 不起作用 time rand srand      更新时间:2023-10-16

因此,我正在尝试在功能中生成随机整数,但是它返回相同的数字。NUM_SOURCES == 5,对于所有5个重复,尽管被调用了srand(time(0)),但它给出了相同的数字。我在没有std::的情况下尝试了同样的尝试,但结果没有改变。

有什么建议吗?

std::srand(time(0)); //setting seed
    ...
    for (int i = 0; i < NUM_SOURCES; i++)
                         {
                             if (sourceDeq->at(i)->getCurrentBid() == NULL) // If the source is empty, generate a new order
                             {
                                 sourceDeq->at(i)->setCurrentBid(sourceDeq->at(i)->generateBid(systemTime));
                             }
                         }
    ...
    Bid* Source::generateBid(int sysTime)
    {
        bidAmount = bidAmount + 1;
        return new Bid(bidAmount, generateTimeCreation(sysTime), 0, 0, 0, getNumber());
    }
    ...
    int Source::generateTimeCreation(int sysTime)
    {
        srand(0);
        if (sLaw == UNIFORM)
            return (sysTime + std::rand() % 10);
        if (sLaw == EXPONENTIAL)
            return(sysTime + round((1 - exp(-(std::rand() % 100))) * 10));
    }

srand(0);初始化随机数生成器再次,因此每次都会有相同的结果...不要做。

time(NULL)调用的全部要点是提供A random 种子。