所有的C++ STL产生的随机数(对于相同的种子)是否都相同?

14

所有的C++ STL生成相同的随机数吗(对于相同的种子)? 这适用于所有平台吗? 这在哪里规定?


2
小题大做的抱怨:randsrand不是STL的一部分;-) - fredoverflow
1个回答

12

不,标准没有要求特定的实现。另外,获取随机数的唯一标准方式是使用randsrand,它们并非最初的STL的一部分,而是从C中引入的函数。


C++11的随机库怎么样?在这种情况下,问题变得更加有趣。 - Klaim
@Klaim:就我所看到的,它没有提到特殊的实现方式。最终草案的26.5.1.3只要求均匀分布。 - Björn Pollex
5
@Klaim:std::mt19937是一种特定的实现。 - MSalters
@Space_C0wb0y 和 @MSalters > 谢谢,我对这个算法不是很了解,所以我不确定每个使用相同种子的实现是否应该给出相同的结果。 - Klaim
我相信该算法是从boost random进行了改编的(正如tr1和C++0x std命名空间的大部分添加一样)...它是mersenne twister,比您标准的线性同余更快且更均匀。 - AJG85
@AJG85:这就是为什么Python使用它的原因 ;) - Björn Pollex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接