我如何制作随机种子/哈希让兰德实际上随机?

Arc*_*_11 6 c++ random

我将如何生成种子或哈希,使兰特实际上是随机的?我每次选择一个号码时都需要改变它.c ++的新手,所以我不确定如何做到这一点.谢谢!:d

Utk*_*waj 5

使用C++ 11,您可以使用std::random_device.我建议你看一下综合指南的链接.

视频链接中提取基本信息:您永远不应该使用&,而是使用和- 在大多数情况下,以下内容将是您想要的:srandrandstd::random_devicestd::mt19937

#include <iostream>
#include <random>
int main() {
    std::random_device rd;
    std::mt19937 mt(rd());
    std::uniform_int_distribution<int> dist(0,99);
    for (int i = 0; i < 16; i++) {
        std::cout << dist(mt) << " ";
    }
    std::cout << std::endl;
}
Run Code Online (Sandbox Code Playgroud)


man*_*ano 1

如果不采样环境数据或访问量子随机数源,就不存在“真正随机”的随机数生成器。如果您需要真正的随机数,请考虑访问 ANU 随机数源 ( http://qrng.anu.edu.au/FAQ.php#api )。

否则,Boost 提供了更强大的伪 RNG,这应该足以满足大多数用途:http://www.boost.org/doc/libs/1_58_0/doc/html/boost_random.html

  • 请注意,大部分 boost random 都是用 c++11 标准化的,并且可以通过“&lt;random&gt;”访问。 (3认同)