2014-12-20 181 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)