我正在尝试使用R&#39 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
变量时,它们会生成不同的随机数?
这证明两个功能正常工作。我没有设定任何种子价值。
{{1}}
答案 0 :(得分:5)
尝试:
x <- seq(1:10)
y <- x + runif(10)
runif(1)
确实只生成一个添加到矢量的值。
所以你也可以这样做同样的结果:
x_runif <- runif(1) # create one random value
y <- x + x_runif