我有一个问题,基本上是以下 matlab 问题的矢量化 R 解决方案:
matlab 生成给定概率的随机数 https://stackoverflow.com/questions/13914066/generate-random-number-with-given-probability-matlab
我能够根据随机统一数和每个单个事件的给定概率(总计为 100% - 仅可能发生一个事件)生成随机事件结果:
sum(runif(1,0,1) >= cumsum(wdOff))
然而,该函数仅采用单个随机统一数,而我希望它采用随机统一数向量并输出这些条目的相应事件。
所以基本上我正在寻找 Matlab 中 Oleg 向量化解决方案的 R 解决方案(从注释到 matlab 解决方案):
“矢量化解决方案:sum(bsxfun(@ge, r, cumsum([0, prob]),2)
where r
是一个列向量并且prob
行向量。 ——奥列格”
如果您需要更多信息,请告诉我。
您可以只进行加权随机样本,而不必担心您的 cumsum 方法:
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)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)