Tôi nghĩ rằng thuật toán đơn giản của bạn sẽ xáo trộn các thẻ một cách chính xác vì số lần xáo trộn có xu hướng vô cùng.
Giả sử bạn có ba thẻ: {A, B, C}. Giả sử rằng thẻ của bạn bắt đầu theo thứ tự sau: A, B, C. Sau một lần xáo trộn, bạn có các kết hợp sau:
{A,B,C}, {A,B,C}, {A,B,C} #You get this if choose the same RN twice.
{A,C,B}, {A,C,B}
{C,B,A}, {C,B,A}
{B,A,C}, {B,A,C}
Do đó, xác suất thẻ A ở vị trí {1,2,3} là {5/9, 2/9, 2/9}.
Nếu chúng ta xáo trộn các thẻ lần thứ hai, thì:
Pr(A in position 1 after 2 shuffles) = 5/9*Pr(A in position 1 after 1 shuffle)
+ 2/9*Pr(A in position 2 after 1 shuffle)
+ 2/9*Pr(A in position 3 after 1 shuffle)
Điều này mang lại cho 0.407.
Sử dụng cùng một ý tưởng, chúng ta có thể hình thành mối quan hệ lặp lại, nghĩa là:
Pr(A in position 1 after n shuffles) = 5/9*Pr(A in position 1 after (n-1) shuffles)
+ 2/9*Pr(A in position 2 after (n-1) shuffles)
+ 2/9*Pr(A in position 3 after (n-1) shuffles).
Mã hóa mã này trong R (xem mã bên dưới), đưa ra xác suất thẻ A ở vị trí {1,2,3} là {0,3334, 0,3333, 0,3333} sau mười lần xáo trộn.
Mã R
## m is the probability matrix of card position
## Row is position
## Col is card A, B, C
m = matrix(0, nrow=3, ncol=3)
m[1,1] = 1; m[2,2] = 1; m[3,3] = 1
## Transition matrix
m_trans = matrix(2/9, nrow=3, ncol=3)
m_trans[1,1] = 5/9; m_trans[2,2] = 5/9; m_trans[3,3] = 5/9
for(i in 1:10){
old_m = m
m[1,1] = sum(m_trans[,1]*old_m[,1])
m[2,1] = sum(m_trans[,2]*old_m[,1])
m[3,1] = sum(m_trans[,3]*old_m[,1])
m[1,2] = sum(m_trans[,1]*old_m[,2])
m[2,2] = sum(m_trans[,2]*old_m[,2])
m[3,2] = sum(m_trans[,3]*old_m[,2])
m[1,3] = sum(m_trans[,1]*old_m[,3])
m[2,3] = sum(m_trans[,2]*old_m[,3])
m[3,3] = sum(m_trans[,3]*old_m[,3])
}
m