2014-12-20 99 views
0

我有一个独立的事件成功的概率列表:如何用概率列表高效地计算二项式概率? R中

probs <- c(.2,.3,.4) 

我想写的是回答这个问题的功能:什么是这些独立事件至少获得X的成功概率有多大?

我现在的方法是使用for循环运行下面的代码几千次。有没有更高效的方法?

sim_results <- probs - runif(length(probs), 0, 1) 
length(sim_results[sim_results > 0]) 
+0

你是因为教学原因还是因为你想知道结果?因为如果你只是想要这个概率,它真的很微不足道...... – Rufflewind

+2

如果你只是在寻找三个独立伯努利随机变量的期望值,那不是一个编程问题。听起来你需要一个数据导师而不是程序员。你有编程问题,我在这里失踪? – MrFlick

+0

我在问如何在R中编写代码来回答这个问题。这可能非常简单,但是我写的代码非常缓慢,大量的“probs”。 – user2374133

回答

1

尝试一次性生成所有随机数并避免循环。

# number of random probabilities 
p = 100 
# number of simulations 
N = 1000 
# random probabilities 
probs = runif(p) 
M = matrix(runif(p*N), N, p) 
# outcome 
y = apply(M,1,function(x) sum(probs>x)) 
hist(y)