読者です 読者をやめる 読者になる 読者になる

クフでダローバルな日記

タフでもグローバルもない

桁数と円周率における出現位置の関係

はじめに

 前回の研究、
http://swimath2.hatenablog.com/entry/2014/01/26/002956
では、なぜ出現位置が$100^n$になるかが明らかにならなかったので、今回追実験をすることで理由を明らかにしたい。

手法

 1,2,...,999999の数字が円周率の小数第何位に出現するかを調べ、各桁数での平均値を取ることで、桁数と出現位置に関するグラフを得る。ただし、このままでは0で始まるものが除かれてしまうので、01,001,...000001なども別にカウントすることにする。
 円周率のtxtファイルは前回位と同じものを用い、コードは以下のようにする。

File.open("../pi5oku.txt", "r") do |file|
	sum = Array.new(6)
	for i in 0 ... sum.length()
		sum[i] = 0
	end
	ary = file.readlines
	pis = ary[2]
	(0..999999).each do |num|
		str_num = num.to_s #数字を文字列に
		len = str_num.length #桁数
		pos = pis.index(str_num)
		puts "#{num} is at #{pos}"
		sum[len-1] += pos
		if len < 6 then
			num = str_num.insert(0,"0") #"01", "001"などを作りなおす
			redo
		end	
	end
	puts "Average"
	for i in 0..5 do
		ave = sum[i]/10**(i+1)
		puts "#{i+1} : #{ave}"
	end	
end

結果

 グラフは以下のようになった。ただし対数グラフであることに注意。
f:id:SWIMATH2:20140128232626j:plain
 対数グラフの中ではほぼ直線状になっており、n桁の数の出現位置はおよそ$10^n$である。

考察

 前回のグラフがおよそ$100^n$程度になっていたのは、以下の様な理由であると考えられる。すなわち、大文字アルファベットのASCIIコードが二桁(A:65,B:66,...,Z:90)であるために、桁数が一つ飛ばしとなり、$100^n$となったのである。

次に、$10^n$となった理由を考える。
「完全な乱数列の場合、桁数nの数字が出現する位置の期待値は$10^n$番目である」
ことを示す。

完全な乱数列であるとき、いま注目している数字から$i$番目の数字が$k (0\le k\le 9, \in \mathbb{N} $である確率は各々$\displaystyle \frac{1}{10}$である。
同様に、$i$番目の数字からの2つの数$00,01,\dots 99$のいずれかである確率は各々$\displaystyle \left( \frac{1}{10} \right)^2 = \frac{1}{100} $である。
従って、$i$番目の数字からの$n$個の数$\underbrace{00\cdots 0}_{n桁} \,, \dots ,\,
\underbrace{99\cdots9}_{n桁} $のいずれかである確率は、$\displaystyle \left( \frac{1}{10} \right)^n = \frac{1}{10^n}$である。

 すなわち、求めるべき期待値は確率$p = \frac{1}{10^n}$で特定の$n$桁の数が出る事象が起こるとき、その数が出るまでたどるべき数字の期待値であり、これを$E$とおくと、
\[ E = p + (1-p) (1+E) \]
\[ \therefore E = \frac{1}{p} = 10^n \]
 従って、求める桁数の期待値は$10^n$である。$\square$

以上より、円周率が完全な乱数列の場合にn桁の出現位置の平均値が小数第$10^n$位であることから、上記の結果は円周率がほぼ完全な乱数となっていることの証拠となりうるのではないかと考えられる。

Acknowledgement

I would like to thank all the people who helped me.