繁体   English   中英

从 R 中的两个不同间隔生成随机数

[英]Generating random numbers from two different intervals in R

要在单个范围内生成随机分布的值,我使用:

runif(number_of_numbers, lower_bound, upper_bound)

但是,如果我想在两个不同的时间间隔内生成随机分布的值怎么办?

例如,我想在 [-3,-2] 和 [2,3] 之间生成 100 个随机值。
有没有一种优雅的解决方案?

我的单线解决方案如下,但是可能有比这更好的优雅解决方案:

sample(c(runif(100,-3,-2),runif(100,2,3)),100)
ifelse(runif(100)>0.5,1,-1)*runif(100,2,3)

想一想名为列表的奇妙事物。 您可以在它们上使用函数。 这简化了很多。 您可以将结果保存在列表中的另一个优点。

ls_iv <- list(iv1 = -3:-2, iv2 = 2:3)

lapply(ls_iv, function(x) runif(100, x[1], x[2]))

如果您想要适用于任何两个间隔(a_1,b_1)和(a_2,b_2)的东西,go 类似于:

n <- 100
a1 <- -3; b1 <- -2
a2 <- 2; b2 <- 3

ifelse(rbinom(n, 1, 0.5), runif(n, a1, b1), runif(n, a2, b2))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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