R runif和rnorm用向量运算产生相同的随机数

时间:2016-06-20 22:12:05

标签: r random

我正在尝试使用R&#39 runifrnorm函数生成随机数据,其中这些函数应该添加一些"噪声"生成的数据。但是,当我将它们作为向量加法运算的一部分应用时,它们产生相同的随机数。

以下是x是一个自变量的示例。我想生成yz,它们是具有一点"噪声的相关输出变量"由随机数生成器添加到它们。噪音应该随着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}}

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