在 R 中制作加权随机布尔值的快速方法

Quick way to make weighted random boolean in R

好的,所以我需要根据我事先计算的先验概率生成一个随机布尔值。目前我正在做这样的事情:

    sample(0:1,1,replace=T, c( 0.6, 0.4))

这当然很好用,问题是我需要这样做数百万次(基于每次不同的权重 - 0.6、0.4 简单的例子)。当然,我已经将它包装在 sapply 中并将其并行化并且它可以工作,但我可能需要将其增加到数千万或更多,我想知道是否有比 [=11 更快的生成加权随机布尔值的方法=]命令

您正在从二项分布中抽样,执行此操作的内置函数是 rbinom()

以下是创建简单示例的方法:

rbinom(n=10, size=1, prob = c( 0.6, 0.4))
 [1] 0 1 0 0 0 1 1 1 1 1

时间安排:

> system.time({
+   x <- rbinom(n=2.5e6, size=1, prob = c( 0.6, 0.4))
+ })
   user  system elapsed 
   0.17    0.00    0.17 
> str(x)
 int [1:2500000] 1 0 1 1 1 0 1 0 0 1 ...