流れる空の中で数学を。

とある数学好きの「手作りすうがく」と「気ままな雑記」。

【mod】n桁の数の各位を足し続けた結果が最高の位に一致する確率【Python】

Amazon.co.jp: Yoshiki Ueoka:作品一覧、著者略歴

数学関連の絶版本・品切れ本をコチラから購入できます!

問題

実はこの算数の問題は、現時点での正答率が50%程度なので、割と良問だったのではないかと満足しています。

一般化

これをn桁にした場合いくつ条件を満たすものがあるか考えてみます。

これはPythonでプログラミングすると、以下のようになります(面倒なのでjupyter notebookのコードを直貼りします)。

for n in range(2,8):
 count=0
 for N in range(10**(n-1),10**n):
  M=(N-N%(10**(n-1)))/(10**(n-1))
  if N%9==M%9:
   count+=1
 print('n=',n,'count=',count)
 print(count/(10**n-10**(n-1))*100,'%')

全角スペースが入っていますが、使用する場合、タブのスペースに置き換えてください。

実行結果

n=7桁までの結果を計算した。

n= 2 count= 18
20.0 %
n= 3 count= 108
12.0 %
n= 4 count= 1008
11.200000000000001 %
n= 5 count= 10008
11.12 %
n= 6 count= 100008
11.112 %
n= 7 count= 1000008
11.1112 %

このように、題意を満たす確率P_nは、

P_n=\frac{10^{n-1}+8}{10^n-10^{n-1}}

となると考えられる。n\rightarrow \inftyの極限を考えると、

\lim_{n\rightarrow \infty} P_n=\frac{1}{10-1}=\frac{1}{9}

となることが分かる。