Combinatorics
秘密聖誕老人安排將導致完美配對的概率
所以,我們有秘密聖誕老人在工作。
我們8個人。我們每個人輪流從一個碗裡拿出一小張紙,上面寫著名字。唯一的規則:如果你拉了你的名字,你必須把那張紙放回碗裡,然後再試一次。
讓我們稱這些人為 A、B、C、D、E、F、G、H,這也是他們挑選紙張的順序。
我們昨晚交換了禮物。
A是F的秘密聖誕老人。
B是E的秘密聖誕老人。
C是D的秘密聖誕老人。
D是C的秘密聖誕老人。
E是B的秘密聖誕老人。
F是A的秘密聖誕老人。
G是H的秘密聖誕老人。
H是G的秘密聖誕老人。
看看發生了什麼?我們結成了情侶。
A和F是彼此的秘密聖誕老人。
B和E是彼此的秘密聖誕老人。
C和D是彼此的秘密聖誕老人。
G和H是彼此的秘密聖誕老人。
這種情況發生的概率是多少,你是如何計算的?
之間的分配總數人們,沒有人被分配給自己,是
(這些稱為錯位。)該值非常接近. 如果它們對應於完美配對,那麼它們是不相交換位的產物。這意味著它們的循環結構是
不同的這種模式的數量是所有排列的組的順序名稱除以模式穩定器的順序。穩定元素可以交換任意數量的對,也可以置換對,哪裡有穩定元素。因此有
這樣的配對。
由於所有這樣的完美配對都是精神錯亂,並且所有精神錯亂的可能性都相同,因此機會等於
為了因此,人們的確切答案是而近似值是: 他們同意五個有效數字。
為了檢查,這個
R
模擬繪製了八個對象的一百萬個隨機排列,只保留那些混亂的,併計算那些完美配對的。它輸出其估計值、估計值的標準誤差和 Z 分數以將其與理論值進行比較。它的輸出是p.hat se Z 0.006981031 0.000137385 -0.711721705
小 Z 分數與理論值一致。(這些結果將與之間的任何理論值一致和.)
paired <- function(x) crossprod(x[x] - 1:length(x))==0 good <- function(x) sum(x==1:length(x)) == 0 n <- 8 set.seed(17) x <- replicate(1e6, sample(1:n, n)) i.good <- apply(x, 2, good) i.paired <- apply(x, 2, paired) n.deranged <- sum(i.good) k.paired <- sum(i.good & i.paired) p.hat <- k.paired / n.deranged se <- sqrt(p.hat * (1-p.hat) / n.deranged) (c(p.hat=p.hat, se=se, Z=(p.hat - 15/2119)/se))