繁体   English   中英

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

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

所以我试图在函数内部生成随机整数,但是它返回相同的数字。 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)进行调用的全部目的是提供一个随机种子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM