随机数生成

随机数生成

我已经使用 random 命令在 turbo C++ (DOS) 中生成了随机数。
同样,我已经使用 srand 和 rand 命令在 ubuntu C++ 中生成了随机数。

两个随机代彼此不匹配(即,对于特定的种子,两个代都是不同的)。

请告诉我这个问题背后的原因。是否可以获取随机命令、srand 和 rand 命令背后的代码?

答案1

Turbo C++ 和 Gnu G++ (C++)(可能是 LLVM/clang)有不同的库。它们的实现rand以及srand许多(许多!)函数可能在如何它们提供了正确的结果。

这些库中的每个函数都会产生预期的结果,,,等等open。(如果没有,它们就不是很'readexit符合标准')。

所以randsrand 在每个环境中正常工作...它们提供(和种子)随机数。

如何他们得出的结论是没有定义的,有几种创建随机数的方法(见`随机数生成'有关 RNG 的更多信息)

因此,即使给定相同的种子值,您也不能期望不同的 RNG 库提供相同的输出。无论您使用哪个库源,Microsoft、Solaris、Linux、*BSD、OSX 等,情况都是如此。

只有当精确的 相同的方法是用来导出随机数的,你能否期望得到相同的序列。熵收集的差异可能会有所不同,并会随着时间的推移产生扰动。我想有人会纠正我关于“类似”的说法,但只要你使用相同的库,你就应该从相同的种子中获得相同的结果。(一样一样一样!)

相关内容