平均値と標準偏差で一様分布であることを確認する
(2016/12/03 0:44:37 created.)
冒頭で System.Random クラスは一様分布の乱数発生器であることを述べましたが、このことを平均値と標準偏差で評価してみましょう。
Program.cs
- namespace Tips_Random
- {
- using System;
- using System.Linq; 
- class Program 
- {
- static void Main(string[] args) 
- {
- var rand = new Random(); 
- #region 平均値と標準偏差
- var N = 100000; 
- Console.WriteLine("[0, 100) の乱数を {0} 回生成して平均値と標準偏差を求める。", N); 
- var values = Enumerable.Range(0, N).Select(_ => rand.Next(0, 100)).ToArray(); 
- var ave = values.Average(); 
- var stdev = Math.Sqrt(((double)values.Select(x => x * x).Sum() / N - ave * ave)); 
- Console.WriteLine("Average = {0}, σ = {1}", ave, stdev); 
- Console.WriteLine("一様分布している様子がわかる。"); 
- Console.WriteLine(); 
- Console.ReadKey(); 
- #endregion 平均値と標準偏差
- } 
- } 
- } 
 
一様分布の平均値は { (最大値) - (最小値) } ÷ 2、標準偏差は { (最大値) - (最小値) } ÷ 2√3 であることが知られています。これを上記の場合に当てはめると、平均値は 50、標準偏差は100 ÷ 2√3 = 100 ÷ 3.4641… ≒ 28.87 となり、ほぼ一致していることが分かります。
Tweet