我将如何生成种子或哈希,使rand实际上是随机的?我每次选择一个数字时都需要改变它。 c ++的新手,所以我不确定如何做到这一点。谢谢! :d
答案 0 :(得分:5)
使用C ++ 11,您可以使用std::random_device
。我建议您观看link以获取全面的指南。
从视频链接中提取必要消息:您永远不会使用srand
& rand
,而是使用std::random_device
和std::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