開發平台(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 的吧?
那在模擬時要怎麼辦? 先做出滿足條件的亂數表? 還是這兩數各給一張表?
希望版大們能給點意見~
腦筋打結時容易鑽牛角尖,版大們也可以當我胡思亂想。