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

时间:2015-02-04 11:30:26

标签: r random boolean weighted

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

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

这当然很好,问题是我需要做数百万次(基于每次不同的权重 - 0.6,0.4简单的例子)。当然我已经把它包裹起来并且已经并行化并且它可以工作,但我可能需要将其增加到数千万或更多,我想知道是否有更快的方法来生成加权随机布尔值而不是{{1命令

1 个答案:

答案 0 :(得分:3)

您正在从二项分布中进行采样,而执行此操作的内置函数是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 ...