[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
コインの表が出る確率をベイズで計算するプログラムです。
ここのプログラムを少し改造しました。
using System; using System.Linq; class Program { static void Main() { double[] probabilities = Enumerable.Repeat(1.0, 100 + 1).ToArray(); normalize(probabilities); Random random = new Random(); const double HeadProbability = 0.7; for (int i = 0; i < 5000; i++) { if (random.NextDouble() < HeadProbability) { flipCoinHead(probabilities); } else { flipCoinTail(probabilities); } } foreach (var probability in probabilities) { Console.WriteLine(probability); } } static void normalize(double[] probabilities) { double sum = probabilities.Sum(); for (int i = 0; i < probabilities.Length; i++) { probabilities[i] /= sum; } } static void flipCoinHead(double[] probabilities) { for (int i = 0; i < probabilities.Length; i++) { probabilities[i] *= (double)i / (probabilities.Length - 1); } normalize(probabilities); } static void flipCoinTail(double[] probabilities) { for (int i = 0; i < probabilities.Length; i++) { probabilities[i] *= (1.0 - (double)i / (probabilities.Length - 1)); } normalize(probabilities); } }
このプログラムは2つの部分から成り立っています。
1つはいかさま師。
もう一つはいかさまを見破ろうとする部分です。
いかさま師プログラムは表が出る確率が70%のイカサマコインを5000回投げます。
もう片方のプログラムはそのコイン投げの結果から、コインがどのくらいの確率で表が出やすいのかを計算します。
「結果」のところにあるグラフはこのプログラムの出力(101個の数字)をグラフにしたものです。
表が何%の確率で出るかを表したグラフです。
このグラフによると、70%で表が出るイカサマコインだという疑いが最も高いですね。