![](/img/trans.png)
[英]Why do R commands rnorm() and qnorm(runif()) generate different random numbers?
[英]R runif and rnorm producing same random numbers with vector operation
我正在尝试使用R的runif
和rnorm
函数生成随机数据,这些函数应该在生成的数据中添加一些“噪音”。 但是,当我将它们作为向量加法运算的一部分应用时,它们会产生相同的随机数。
以下是x
是自变量的示例。 我将生成y
和z
,它们是从属输出变量,并由随机数生成器添加了一些“噪声”。 假定噪声随x
每个新值随机变化。
x <- seq(1:10)
y <- x + runif(1)
z <- x + rnorm(1,mean=2, sd=0.5)
df <- data.frame(x, y, z)
df
# x y z
# 1 1 1.364842 3.10679
# 2 2 2.364842 4.10679
# 3 3 3.364842 5.10679
# 4 4 4.364842 6.10679
# 5 5 5.364842 7.10679
# 6 6 6.364842 8.10679
# 7 7 7.364842 9.10679
# 8 8 8.364842 10.10679
# 9 9 9.364842 11.10679
# 10 10 10.364842 12.10679
如上所述,每个随机数生成器都在创建相同的值。 为什么会这样呢? 我该如何解决这个问题,以便每次在向量加法运算中将它们添加到x
变量时它们都生成不同的随机数?
这证明这两个功能正常工作。 我没有设置任何种子值。
runif(1)
# [1] 0.05202364
runif(1)
# [1] 0.02315487
rnorm(1,mean=2, sd=0.5)
# [1] 1.714753
rnorm(1,mean=2, sd=0.5)
# [1] 1.369988
尝试:
x <- seq(1:10)
y <- x + runif(10)
runif(1)
实际上只产生一个值,该值被添加到向量中。
因此您也可以这样做,但结果相同:
x_runif <- runif(1) # create one random value
y <- x + x_runif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.