gpt4 book ai didi

r - 为什么 R 命令 rnorm() 和 qnorm(runif()) 生成不同的随机数?

转载 作者:行者123 更新时间:2023-12-01 03:35:22 26 4
gpt4 key购买 nike

我设置了种子,生成均匀分布的随机数,用逆CDF方法得到一组正态分布的随机数。然后,我重置种子并使用 rnorm() 生成正态分布的随机数.结果是不同的。 R 中的随机数生成器不是默认使用 Mersenne-Twister 算法生成整数吗? R 中的所有其他随机数(正态分布、均匀分布、指数分布等)不应该是这些伪随机整数的某些确定性变换吗?

set.seed(1)
u1 <- runif(5)
u1
# [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
z1 <- qnorm(u1)
z1
# [1] -0.6264538 -0.3262334 0.1836433 1.3297993 -0.8356286
set.seed(1)
z2 <- rnorm(5)
z2
# [1] -0.6264538 0.1836433 -0.8356286 1.5952808 0.3295078

是的,我看到一些元素匹配,但不一定以相同的顺序出现。有人可以解释一下吗?

最佳答案

看起来所有元素都以相同的顺序出现,但在第一个方法的输出中总是散布着一个额外的元素。

这似乎表明 rnorm每次迭代消耗两个随机数,这符合 this answer .

case INVERSION:
#define BIG 134217728 /* 2^27 */
/* unif_rand() alone is not of high enough precision */
u1 = unif_rand();
u1 = (int)(BIG*u1) + unif_rand();
return qnorm5(u1/BIG, 0.0, 1.0, 1, 0);

看起来不太重要的位需要第二个数字。

这意味着当您查看更多数字时,您观察到的“相同”数字也会略有不同。

关于r - 为什么 R 命令 rnorm() 和 qnorm(runif()) 生成不同的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com