2010-11-08 65 views
1

我真的迷路了。我怎樣才能解決這個問題?使用Python解決統計問題

從1美元的資本開始,你選擇一個固定的比例p來投注一個公平的硬幣,反覆投擲1000次。如果拋球落地,你失去了土地尾巴,你的回報會翻倍。例如,如果p = 0.25,並且第一次投注您的投注爲$ 0.25,並且如果頭像出現,您贏得$ 0.5,所以您有$ 1.50。第二次嘗試時您繼續下注0.375美元,如果第二次拋球落地尾巴,您還剩下1.125美元。

假設選擇p以最大化1000次翻轉後至少10億美元的機會,那麼您成爲億萬富翁的可能性有多大?

你如何使用Python來編寫這個場景並出來一個答案?

+3

這聽起來像家庭作業可疑。如果是這樣,請添加'作業'標籤。 – 2010-11-08 14:09:44

+4

@Space:[「家庭作業標籤,與其他所謂的'meta'標籤一樣,現在不鼓勵。]](http://meta.stackexchange.com/q/10812) – 2010-11-08 14:32:17

+2

從該頁面:」不要編輯一個問題來添加作業標籤,如果有任何疑問,最好是保持原樣,相反,首先添加一條評論,要求提問者澄清情況。「 – katrielalex 2010-11-08 14:34:34

回答

1

你有任何python的經驗嗎?如果不是,請閱讀tutorial

要解決你的問題,你應該先寫下一些僞代碼。你的第一次嘗試可能是非常普遍的,然後你應該更詳細地瞭解具體的操作,直到最後你真的去實施它。考慮一下細節,比如,你有什麼先決條件以及你需要什麼後續條件?

0

顯而易見的地方就是編寫一些代碼,模擬執行1000次硬幣擲骰,並在最後爲您提供capital的值。這基本上是微不足道的:

def _mc(p): 
    capital = 1.0 
    for _ in xrange(1000): 
     if random.random() < 0.5: 
      capital *= 1 + p 
     else: 
      capital *= 1 - p 
    return capital 

請注意,capital可能最終會變得很小。沒關係。

現在這顯然嚴重依賴於隨機翻轉是什麼,這是不好的。因此,您應該通過執行大量的1000個投幣鏈並根據您認爲應該做的某種統計數據來計算預期價值。

最後,您希望對p的值的範圍做所有這些,可能在00.2之間。您可以使用matplotlib根據預期結果繪製p的圖表,以瞭解p應該是最好的。

請注意,Python可能不是這類事情的最佳語言; C會更快,你也不需要Python的靈活性。

1

這裏有一些提示。由於乘數減少,贏得和虧損的順序最終不會影響總金額。因此,所有投注後的總金額(以$ 1開始)等於1 * (1+2*p)^(W) * (1-p)^(1000-W),其中W是在1000次投注中贏得的總數(因此1000W是損失數)。這將允許你確定,如果給定數量的勝利W,你獲得了超過10億美元。然而,贏得500 /輸500比贏得1000 /輸0的方法還多。你可以通過使用binomial coefficient找到在1000次擲骰中獲勝的方法數。

如果你把這些想法正確使用,那麼你可以找到一個最大化概率的p。但是,你應該注意到,實際上有一系列的p值都可以提供超過10億美元的平等機會。儘管如此,他們並不都能賺到相同的錢。