根据给定概率生成随机数

7
我有一个问题,基本上是关于向量化R解决以下matlab问题的解决方案:

使用matlab生成给定概率的随机数

我能够根据随机均匀数和每个单一事件的给定概率(总和为100% - 只能发生一个事件)生成随机事件结果:

sum(runif(1,0,1) >= cumsum(wdOff))

然而,该函数仅接受单个随机均匀数,而我希望它接受一组随机均匀数,并输出这些条目的相应事件。
所以基本上我正在寻找R解决方案,以解决Oleg在matlab中的矢量化解决方案(来自matlab解决方案的评论):“矢量化解决方案:sum(bsxfun(@ge, r, cumsum([0, prob]),2)其中r是列向量,prob是行向量。- Oleg”
如果需要更多信息,请告诉我。

如果您不想使用 sample(),您可能可以使用 findInterval()... - Ben Bolker
这个回答是否解决了你的问题?在Matlab中从预先指定的概率质量函数中绘制随机数 - SecretAgentMan
1个回答

13

你可以尝试使用加权随机抽样,而不必担心您的累计和方法:

sample(c(1, 2, 3), size = 100, replace = TRUE, prob = c(0.5, 0.1, 0.4))

如果你已经有了这些数字,也可以这样做:

x <- runif(10, 0, 1)
as.numeric(cut(x, breaks = c(0, 0.5, 0.6, 1)))

1
@SophusBonnenRossen 如果Jeremycg的回答对您有帮助,请将其标记为正确答案! - Bas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接