首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用非随机的qsrand随机方法

使用非随机的qsrand随机方法
EN

Stack Overflow用户
提问于 2010-05-04 17:11:39
回答 7查看 27.5K关注 0票数 18

我这里有个奇怪的问题,我找不到一个很好的解释,所以我想问你们:

考虑以下方法:

代码语言:javascript
运行
复制
int MathUtility::randomize(int Min, int Max)
{
    qsrand(QTime::currentTime().msec());

    if (Min > Max)
    {
        int Temp = Min;
        Min = Max;
        Max = Temp;
    }
    return ((rand()%(Max-Min+1))+Min);
}

我不会解释这个方法到底做了什么,而是解释我的问题:

我意识到当我在循环中调用这个方法时,有时是,我一次又一次地得到相同的随机数.例如,这个片段..。

代码语言:javascript
运行
复制
for(int i=0; i<10; ++i)
{
    int Index = MathUtility::randomize(0, 1000);
    qDebug() << Index;
}

...will产生的结果如下:

567...etc.

我也意识到,如果我不每次打电话给qsrand,但在我的应用程序生命周期中只打一次电话,它就会运行得非常好.

我的问题:为什么?

EN

Stack Overflow用户

发布于 2010-05-04 17:14:59

如果调用足够快,QTime::currentTime().msec()的值就不会改变,基本上是用相同的种子重新播种qsrand,导致生成的下一个随机数与前面的随机数相同。

票数 2
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2767383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档