好的,所以我需要根据我事先计算过的先验概率制作一个随机布尔值。目前我正在做这样的事情:
sample(0:1,1,replace=T, c( 0.6, 0.4))
这当然很好,问题是我需要做数百万次(基于每次不同的权重 - 0.6,0.4简单的例子)。当然我已经把它包裹起来并且已经并行化并且它可以工作,但我可能需要将其增加到数千万或更多,我想知道是否有更快的方法来生成加权随机布尔值而不是{{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 ...