for WPF developers
Home Profile Tips 全記事一覧

平均値と標準偏差で一様分布であることを確認する

(2016/12/03 0:44:37 created.)

冒頭で System.Random クラスは一様分布の乱数発生器であることを述べましたが、このことを平均値と標準偏差で評価してみましょう。

Program.cs
  1. namespace Tips_Random
  2. {
  3.     using System;
  4.     using System.Linq;
  5.  
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             var rand = new Random();
  11.  
  12.             #region 平均値と標準偏差
  13.             var N = 100000;
  14.             Console.WriteLine("[0, 100) の乱数を {0} 回生成して平均値と標準偏差を求める。", N);
  15.             var values = Enumerable.Range(0, N).Select(_ => rand.Next(0, 100)).ToArray();
  16.             var ave = values.Average();
  17.             var stdev = Math.Sqrt(((double)values.Select(x => x * x).Sum() / N - ave * ave));
  18.             Console.WriteLine("Average = {0}, σ = {1}", ave, stdev);
  19.             Console.WriteLine("一様分布している様子がわかる。");
  20.             Console.WriteLine();
  21.             Console.ReadKey();
  22.             #endregion 平均値と標準偏差
  23.         }
  24.     }
  25. }


一様分布の平均値は { (最大値) - (最小値) } ÷ 2、標準偏差は { (最大値) - (最小値) } ÷ 2√3 であることが知られています。これを上記の場合に当てはめると、平均値は 50、標準偏差は100 ÷ 2√3 = 100 ÷ 3.4641… ≒ 28.87 となり、ほぼ一致していることが分かります。