解决方法
- eng.seed(static_cast<unsigned int >(time(NULL)));
然而,真正的随机性是在没有额外输入的情况下在确定性机器上无法实现的.每个伪随机数生成器在某种程度上都是周期性的,这是你不会从非确定性数字中得到的.例如,std :: mt19937的周期为219937-1次迭代.真正的随机性很难实现,因为您必须监控看似不确定的东西(用户输入,大气噪声).见Jerry’s和Handprint’s answer.
如果你不想要一个基于时间的种子,你可以使用std::random_device
,如emsr’s answer所示.你甚至可以使用std :: random_device作为生成器,这是最接近真正随机性的标准库方法.