繁体   English   中英

R runif和rnorm通过矢量运算产生相同的随机数

[英]R runif and rnorm producing same random numbers with vector operation

我正在尝试使用R的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

尝试:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM