平均値と標準偏差で一様分布であることを確認する
(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