我的随机数略有不同,具体取决于操作系统(Mac vs Linux):
set.seed(890458, kind="Mersenne-Twister", normal.kind="Inversion")
print(rlnorm(1504)[1504], digits=22)
sessionInfo()
Run Code Online (Sandbox Code Playgroud)
Linux的:
> set.seed(890458, kind="Mersenne-Twister", normal.kind="Inversion")
> print(rlnorm(1504)[1504], digits=22)
[1] 2.732876214731374542311
> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 9 (stretch)
Matrix products: default
BLAS: /usr/lib/libblas/libblas.so.3.7.0
LAPACK: /usr/lib/lapack/liblapack.so.3.7.0
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.4.0 tools_3.4.0 digest_0.6.12
Run Code Online (Sandbox Code Playgroud)
苹果电脑:
> set.seed(890458, kind="Mersenne-Twister", normal.kind="Inversion")
> print(rlnorm(1504)[1504], digits=22)
[1] 2.732876214731374098221
> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.4.0 digest_0.6.12
Run Code Online (Sandbox Code Playgroud)
这是预期的吗?反正是否保证跨平台的重复性?它也发生在rnorm而不是rlnorm但更高的数字.
这不是随机生成算法的问题。是不可能的。计算机上的任何伪随机数生成器的工作方式是,它生成在不同距离上具有最小相关性的数字序列。即使内部状态有一点不同,生成的数字序列也完全不同。不可能得到稍微不同的随机数。
另请注意,所有好的随机数算法都使用整数内部状态。浮点输出是“人工的”。
因此,在您的示例中,问题必须位于实际的随机数生成器之外。此外,任何生成器的随机性实际上都是有限的。使用“digits=22”可能没有意义。Mac 和 Linux 库中的某个地方肯定存在精度差异。这很有趣并且可能令人担忧 - 但正如我所说,与随机数算法无关。