高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)10日目「正規分布を考える」解説
マガジンリスト > 数学B編 4.確率分布と統計的な推測 > 10日目 解説
本日の課題、おつかれさまでした。
課題の確率変数$${X}$$が標準正規分布$${N(0,1)}$$に従うときの確率$${P(1 \leq X \leq 2)}$$を計算するプログラムを作成することができたでしょうか。
解答例
今回の課題の確率変数$${X}$$が標準正規分布$${N(0,1)}$$に従うときの確率$${P(1 \leq X \leq 2)}$$を計算するプログラムの例を示します。
// 標準正規分布による確率の計算
void setup(){
// P(1≦X≦2)の値を計算する
float prob = probability_of_snd(1.0,2.0);
println("確率P(1≦X≦2):",prob);
}
// 標準正規分布
float standard_normal_distribution(
float x
){
return exp(-x*x /2.0)/sqrt(2.0 * PI);
}
// 標準正規分布による確率P(a≦X≦b)を計算する関数(台形公式を利用)
float probability_of_snd(
float a, // 積分領域の下限
float b // 積分領域の上限
){
float dx = 0.01;
int division_num = (int)((b-a)/dx);
float x, y1, y2;
float prob = 0.0;
for(int i=0; i<division_num; i++){
x = a + i*dx;
y1 = standard_normal_distribution(x);
y2 = standard_normal_distribution(x+dx);
prob = prob + (y1+y2)*dx/2.0;
}
return prob;
}
ソースコード2 確率変数$${X}$$が標準正規分布$${N(0,1)}$$に従うときの確率$${P(1 \leq X \leq 2)}$$を計算するプログラム(完成版)
ソースコード2を、Processing の開発環境ウィンドウを開いて(スケッチ名を「normaldistribution」とします)、テキストエディタ部分に書いて実行すると、コンソールに
確率P(1≦X≦2): 0.13590622
と出力されます(図1)。
なお、この値を正規分布表をもとに計算した結果は、
$$
P(1 \leq X \leq 2) = P(0 \leq X \leq 2) - P(0 \leq X \leq 1) = 0.1359
$$
となるので、おおむね正しい結果が得られていることがわかります。
本日は以上です。
次回は、母集団分布について考えていきます。
次回もよろしくお願いします。
読んだ感想などをお寄せください
本記事を読んだ感想や質問などを以下のお問い合せフォームからお寄せください。(お問合せフォームの本文に、本記事のタイトルを入れてください。)
MK’s papa