円周率の小数点以下に現れる数値
(2018/03/22 8:07:53 created.)
ふと円周率に思いをはせることがあり(かなり頭おかC)、
小数点以下に現れる 0 から 9 の数の出現率は
どのような分布になっているのだろう、と気になってしまった。
気になってしまったものはしょうがない。
というわけで C# コードで簡単に調べてみたよ。
Program.cs
- namespace PiTest
- {
- using System;
- using System.Linq; 
- using System.Text; 
- internal class Program 
- {
- static void Main(string[] args) 
- {
- Console.WriteLine("最大値 = 9、最小値 = 0 のとき、"); 
- Console.WriteLine("おおよそ、一様分布の"); 
- Console.WriteLine("平均値は {(最大値) - (最小値)} / 2 = (9 - 0) / 2 = 4.50"); 
- Console.WriteLine("標準偏差は {(最大値) - (最小値)} / 2√3 = (9 - 0) / 2√3 = " + (9 / 2 / Math.Sqrt(3.0)).ToString("#0.000")); 
- Console.WriteLine("であることが知られている。"); 
- Console.WriteLine(); 
- var nums = ASCIIEncoding.ASCII.GetBytes(Constants.PiString).Select(x => x - 0x30).ToArray(); 
- Console.WriteLine("円周率 " + nums.Length.ToString("N0") +" 桁に出現する数の"); 
- var ave = nums.Average(); 
- var stdev = Math.Sqrt(((double)nums.Select(x => x * x).Sum() / nums.Length - ave * ave)); 
- Console.WriteLine("平均値は " + ave.ToString("#0.00")); 
- Console.WriteLine("標準偏差は = " + stdev.ToString("#0.000")); 
- Console.WriteLine(); 
- Console.WriteLine("一様分布より若干分布が広い"); 
- Console.ReadKey(); 
- } 
- } 
- } 
Constants.PiString は static な string 型で、
円周率の小数点以下の数値を文字列として 1,000,000 桁分保持しています。
というのも、web 上で円周率を調べたらこの桁であれば
テキストデータで掲載されていたので、
それをそのまま流用させていただいたというだけです。
標準偏差が一様分布のものよりもやや大きめ、という結果でした。
円周率は調べ出すと人生終わるらしいので程々にしておきます。
Tweet
| << 古い記事へ シーケンスを n 個毎に分割する | 新しい記事へ >> Keras による学習モデルを変... | 
