<分区>
标题说明了一切,我正在寻找最好是独立的东西,因为我不想添加更多的库。
性能应该不错,因为我需要在一个紧凑的高性能循环中使用它。我想这会以随机性程度为代价。
<分区>
标题说明了一切,我正在寻找最好是独立的东西,因为我不想添加更多的库。
性能应该不错,因为我需要在一个紧凑的高性能循环中使用它。我想这会以随机性程度为代价。
最佳答案
任何特定的伪随机数生成算法都会表现得像这样。 rand
的问题是它没有指定它是如何实现的。不同的实现将以不同的方式运行,甚至具有不同的质量。
但是,C++11 提供了新的 <random>
包含大量随机数生成工具的标准库头文件。其中定义的随机数引擎定义明确,给定相同的种子,将始终产生相同的数字集。
例如,流行的高质量随机数引擎是std::mt19937
,这是以特定方式配置的 Mersenne twister 算法。无论您在哪台机器上,以下总是会产生相同的 0 和 1 之间的一组实数:
std::mt19937 engine(0); // Fixed seed of 0
std::uniform_real_distribution<> dist;
for (int i = 0; i < 100; i++) {
std::cout << dist(engine) << std::endl;
}
关于c++ - C/C++ 算法在不同平台上从相同的种子生成相同的伪随机数序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15500621/