看板 Programming 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 4.9.9.2 就我自己曉得的電腦亂數 rand() 是一張亂數表為底,在亂數種子未重設之前 它在這張表中依序取出數字出來當做亂數 因為我現在是想透過電腦模擬來驗證數學結果 數學結果是 "最理想" 的狀態下的期望值結果 但是不論我怎麼試,模擬的結果似乎都無法做到以上的這點 因為模擬結果 dependent on random table 例如: 兩張只含有 8 個 0, 1 亂數的亂數表 A, B, C, A: 1 1 0 1 0 0 0 1 B: 1 1 0 1 0 0 1 0 C: 1 1 1 1 0 0 0 0 三表都各含 4 個 0、4 個 1,從這三表去取出來的數滿足 P(A)=P(偶)=0.5 如果遊戲規則訂為 "投入1$,取兩數,若是一奇一偶則多得 1$,反之 1$ 就沒了。" 就數學的角度,在公平的遊戲中,機率為 P(奇 & 奇)=P(奇 & 偶)=P(偶 & 奇)=P(偶 & 偶)=0.25。 就電腦亂數表的角度,頭尾相接持續取亂數 A 表滿足以上各 Case 機率=0.25 的性質=================> P(+分)=P(-分)=4/8 B 表 n(奇&奇)=1、n(奇&偶)=3、n(偶&奇)=3、n(偶&偶)=1 => P(+分)=6/8, P(-分)=2/8 C 表 n(奇&奇)=3、n(奇&偶)=1、n(偶&奇)=1、n(偶&偶)=3 => P(+分)=2/8, P(-分)=6/8 用這三張亂數表去做這個遊戲的模擬 那 A 表的顯示遊戲公平(與數學結果相同),B 表顯示玩家得利,C 表顯示莊家得利 Q:原表亂數 equally likely 不能 implies 帶出來的遊戲模擬結果也是 equally likely 的吧? 那在模擬時要怎麼辦? 先做出滿足條件的亂數表? 還是這兩數各給一張表? 希望版大們能給點意見~ 腦筋打結時容易鑽牛角尖,版大們也可以當我胡思亂想。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.185.171 ※ 文章網址: http://www.ptt.cc/bbs/Programming/M.1408515924.A.23D.html ※ 編輯: hexjacal (1.165.185.171), 08/20/2014 14:26:46
bxxl: 亂數表又不保證你不會抽到同樣的號碼(球) 114.45.136.64 08/20 22:20
bxxl: 如果你需要non-replacement抽法,要自己處理 114.45.136.64 08/20 22:21
bxxl: 這跟一袋球或五袋球沒有關係 114.45.136.64 08/20 22:22
bxxl: 你只需要一個產生器(一個seed) 114.45.136.64 08/20 22:22
bxxl: 也就是說你原本的認知是錯誤的,用亂數產生器 114.45.136.64 08/20 22:23
bxxl: 抽到1號球,下次再抽到1號球的機率一樣 114.45.136.64 08/20 22:24
LPH66: 你的問題其實就是標準的賭徒謬誤 123.195.39.85 08/20 22:55
LPH66: http://ppt.cc/1IUR 123.195.39.85 08/20 22:55
hexjacal: 了解嚕,我再多模擬幾次試試看 1.165.185.171 08/21 11:27
readonly: rand()每次都是"independent" 61.228.162.173 08/21 17:30
readonly: 而且是"uniform distributed" 61.228.162.173 08/21 17:30
※ 編輯: hexjacal (114.26.137.84), 08/21/2014 23:48:00
bxxl: 你舉的那幾個根本就不符合亂數產生器的要求118.169.209.195 08/22 20:32
bxxl: 亂數序列要求在非常長的區間內不能重複118.169.209.195 08/22 20:34
bxxl: 你拿短序列重複使用就會不夠亂118.169.209.195 08/22 20:35
bxxl: 你應該不要繼續拿你幻想中的亂數表來算了,118.169.209.195 08/22 20:41
bxxl: 請用真的電腦亂數去產生,有問題再來問118.169.209.195 08/22 20:41