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

时间:2016-03-29 05:05:38

标签: c++ random

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

2 个答案:

答案 0 :(得分:5)

使用C ++ 11,您可以使用std::random_device。我建议您观看link以获取全面的指南。

视频链接中提取必要消息:您永远不会使用srand& rand,而是使用std::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;
}

答案 1 :(得分:1)

没有&#34;实际上是随机的&#34;随机数发生器,不对环境数据进行采样或访问量子随机数源。如果您需要真正随机的数字(http://qrng.anu.edu.au/FAQ.php#api),请考虑访问ANU随机数源。

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