c++ - 提高 Qt 5.3 中随机数生成的质量

标签 c++ qt random seeding qt5.3

我目前正在 Qt5.3 中实现一个随机数生成器,作为遗传算法实验的一部分。我尝试了几种方法,但最好的似乎是:

  // Seed the random generator with current time
  QTime time = QTime::currentTime();
  qsrand((uint)time.msec());

然后这个函数生成随机数:

int MainWindow::getRandomNo(int low, int high)
{
    return qrand() % ((high + 1) - low) + low;
}

由于这些实验的性质,这些数字的随机性很重要。有没有办法提高随机数样本的质量?经过统计分析,Qt 随机数生成器表现出旧版随机数生成系统中的典型模式。

上面使用的方法依赖于当前时间作为数字生成器的种子。有没有办法改进种子,使随机序列不易出现模式?我将非常感谢任何帮助。

最佳答案

使用MT .

您可以在此处获取实现:

几年前我在delphi软件中遇到了同样的问题,后来改用MT解决了我的问题。但请查看 boost 文档中的列表,以获取有关 RNG 算法之间差异的更多详细信息。

关于c++ - 提高 Qt 5.3 中随机数生成的质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26183248/

相关文章:

c++ - 使用 C++ AMP 库

c++在递归中通过引用传递

c++ - std::out_of_range:Mergesort 算法中的 vector 异常

c++ - 使用 QRegExp 从 URL 中提取文件名

algorithm - rng 最高效的均匀随机整数算法是什么?

python - 除了前面写在列表中的数字之外的随机数

c++ - 从多个源创建静态库

c++ - 从Qt上的选定区域(QRubberBand)截图

c++ - 通过远程桌面运行 qt creator

javascript - 从表中选择随机可见行并克隆它(使用 JS/jQuery)