숫자 셔플이 무한대에 가까워지면 간단한 알고리즘이 카드를 올바르게 셔플한다고 생각합니다.
{A, B, C} 카드가 3 개 있다고 가정합니다. 카드가 A, B, C 순서로 시작한다고 가정하십시오. 그런 다음 하나의 셔플 후에 다음 조합이 있습니다.
{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}
따라서, 카드 A가 {1,2,3} 위치에있을 확률은 {5/9, 2/9, 2/9}입니다.
카드를 두 번 섞으면 다음이 수행됩니다.
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)
이것은 0.407을 제공합니다.
동일한 아이디어를 사용하여 재발 관계를 형성 할 수 있습니다.
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).
이것을 R로 코딩하면 (아래 코드 참조), 10 번의 셔플 후 카드 A가 {0.33334, 0.33333, 0.33333}으로 {1,2,3} 위치에있을 가능성이 있습니다.
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