R 生成具有给定概率的随机数

R 生成具有给定概率的随机数,r,matlab,random,vector,R,Matlab,Random,Vector,我有一个问题,基本上是以下matlab问题的矢量化R解决方案: 我能够根据随机均匀数和每个单一事件的给定概率(总和为100%——可能只发生一个事件),通过以下方式生成随机事件结果: 但是,该函数只接受一个随机统一数,而我希望它接受一个随机统一数向量,并为这些条目输出相应的事件 因此,基本上我在寻找Oleg在matlab中矢量化解决方案的R解决方案(从对matlab解决方案的评论): “矢量化解决方案:sum(bsxfun(@ge,r,cumsum([0,prob]),2)其中r是列向量,pro

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

我能够根据随机均匀数和每个单一事件的给定概率(总和为100%——可能只发生一个事件),通过以下方式生成随机事件结果:

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

因此,基本上我在寻找Oleg在matlab中矢量化解决方案的R解决方案(从对matlab解决方案的评论):

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


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

您可以只做一个加权随机样本,而不用担心您的累积法:

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)))

x@SophusBonnenRossen如果Jeremycg的答案对您有帮助,请将其标记为正确答案!如果您确实希望在没有
sample()
的情况下执行此操作,您可能可以使用
findInterval()
…这是否回答了您的问题?
x <- runif(10, 0, 1)
as.numeric(cut(x, breaks = c(0, 0.5, 0.6, 1)))