瀏覽單個文章
8:5
Major Member
 

加入日期: Dec 2002
您的住址: 謎
文章: 265
引用:
作者michelle_lai529
我的寫法,模擬洗牌發牌方式,機率應該比較接近實際吧,參考看看吧

Lotto = rnd_plus( 6, 49 ) '49選6

Function rnd_plus( Vquantity , Vrange )
Randomize
ReDim hand_card(Vquantity)
ReDim card(Vrange)
for i = 1 to Vrange
card(i) = i
next

for j = 1 to Vrange
chang_1 = int((Vrange * Rnd) + 1)
chang_2 = int((Vrange * Rnd) + 1)
temp_card = card(chang_1)
card(chang_1) = card(chang_2)
card(chang_2) = temp_card
next

for k = 1 to Vquantity
hand_card(k) = card(k)
next
rnd_plus = hand_card
End Function

洗完牌後,會亂,但是不會亂得很均勻。

比如說,rnd_plus(49,49) 有可能產生的洗牌結果有 49! 種。
如果是樂透的話,我們會期望每一種發生的機率都是 1/49!。
但是洗牌的結果顯然不會 1/49!...

比如說,我們要依照這個演算法,洗完牌後,順序剛好完全倒置的機率?
因為程式總共取了 2*49 次的亂數,每個亂數有 1-49 種可能。
所以樣本空間是 49^98。

其中某 X 種樣本,洗完後會完全倒置,則剛好導置的機率是.. X / 49^98。
但不管 X 是多少, X / 49^98 都不會是 1/49!

同樣的,我們想算洗完牌後,1,2 剛好交換,其餘都不動的機率?
那會是 Y / 49^98,也不會是 1/49!。

--
如果對於上面的描述很難體會的話,跑 rnd_plus(3,3) 幾萬次,統計一下結果看看...
舊 2008-09-22, 12:04 AM #48
回應時引用此文章
8:5離線中