r - 以给定的概率生成随机数

标签 r matlab random vector

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

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) 其中 r 是列向量,prob 一个行向量。– Oleg"

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

最佳答案

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

关于r - 以给定的概率生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015000/

相关文章:

matlab - 如何对数组进行 "stretch"(插值)但保持其底层数据完整?

页面上的javascript随机图像加载并在一段时间内发生变化

performance - 通过交错复制 3D 阵列的页面构建邻接矩阵

java - R 中的 for 循环之谜

将三列数据框 reshape 为矩阵 ("long"到 "wide"格式)

r - 如何将R中介摘要转换为data.frame?

matlab - 将 .mat 文件转换为 .csv 文件会导致错误?

python - Pandas 根据其他列更改列值

c++ - 随机排列字符串中的字母c++

r - 索引 - 在 R 中使用 dplyr 进行匹配