R 个随机数几乎相同但不相同

问题描述 投票:0回答:1

运行相同版本的 R(一个在 Linux R 服务器上,一个在 AWS 上),RNG 几乎相同,但并不总是相同。 分别来自均匀分布、伽玛分布和正态分布的 100 万个样本中:

    runif()
  • 产生相同的结果。
  • rgamma()
  • 产生7个小差异;否则结果相同。
  • rnorm()
  • 也产生7个小差异;否则结果相同。
    
    
  • 我所说的微小差异是指 1.4510448921274106 与 1.4510448921274115 之类的东西。

什么会导致这些差异?如果是浮点问题,为什么只有一些分布?如果是操作系统/库/软件问题,为什么只在极少数情况下有所不同?

r amazon-web-services random
1个回答
0
投票
伪随机数生成器 (PRNG)

的选择。

R 通常默认实现 Mersenne Twister

来生成随机数,然后将其缩放到 0 到 1 之间的范围 - 从而模拟均匀随机变量。然后可以通过逆概率变换来模拟其他分布。 为了更轻松地了解 PRNG 的工作原理,请观看

这个卡恩学院视频

此外,您还可以查看有关此主题的 R 文档:

    https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Random
  1. https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Random.user
  2. 如果您想实现不同的 PRNG,看看 R 的“底层”发生了什么。我正在开发一个 R 包,允许用户通过函数实现不同的 PRNG。请查看
这里

© www.soinside.com 2019 - 2024. All rights reserved.