通常为了生成均匀随机数序列,我在 R 中使用“runif()”命令:
runif(10,0,10)
[1] 5.032995 8.712604 4.400579 3.874882 2.401324 2.465861 2.59525 8.570266 2.729831 5.176705
出于好奇,我想知道是否有其他方法可以在不使用“runif”命令的情况下生成随机统一数。我听说可以使用计算机时钟生成随机数,但我不确定这是如何完成的。
- 是否可以编写一个 R 脚本来生成随机统一数(在某个范围之间),从而不使用“runif”命令?
谢谢你!
@德米特里循环回答:
v = rep(0,100)
v[1]=3
for (j in 1:100) {
v[j+1]=(65539*v[j])%%(2^31)
}
i = 1:101
range01 <- function(x, ...){(x - min(x, ...)) / (max(x, ...) - min(x, ...))}
rand_data = data.frame(i,v)
rand_data$int_version = range01(rand_data$v)
plot(rand_data$v, type = "b", main = "100 Random Real Numbers with Randu")
plot(rand_data$int_version, type = "b", main = "100 Random Integers with Randu")
您可以从 Sys.time 获取秒的小数部分,并将其用作单次抽奖的穷人技巧:
as.numeric( substr( as.character( unclass(Sys.time())), start=11,stop=16))
它不会是生成随机数序列的特别好的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)