![](/img/trans.png)
[英]rand() not generating random numbers even after 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.