【问题标题】:Generate random number with given probability以给定的概率生成随机数
【发布时间】:2016-01-06 00:41:48
【问题描述】:

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

Generate random number with given probability matlab

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

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

但是该函数只接受一个随机统一数字,而我希望它接受一个随机统一数字的向量并为这些条目输出相应的事件。

所以基本上我正在寻找 Matlab 中 Oleg 向量化解决方案的 R 解决方案(从 cmets 到 matlab 解决方案):

“向量化解:sum(bsxfun(@ge, r, cumsum([0, prob]),2) 其中r 是列向量,prob 是行向量。--Oleg”

如果您需要更多信息,请告诉我。

【问题讨论】:

标签: r matlab random vector


【解决方案1】:

你可以只做一个加权随机样本,而不用担心你的 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)))

【讨论】:

  • @SophusBonnenRossen 如果 Jeremycg 的回答对您有帮助,请将其标记为正确答案!
猜你喜欢
  • 2013-04-21
  • 1970-01-01
  • 2012-12-04
  • 2021-08-27
  • 2017-03-24
  • 2017-10-01
  • 2016-01-26
  • 1970-01-01
相关资源
最近更新 更多