見出し画像

高校数学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)。

図1 スケッチ「normaldistribution」の実行結果


なお、この値を正規分布表をもとに計算した結果は、

$$
P(1 \leq X \leq 2) = P(0 \leq X \leq 2) - P(0 \leq X \leq 1) = 0.1359
$$

となるので、おおむね正しい結果が得られていることがわかります。


本日は以上です。
次回は、母集団分布について考えていきます。

次回もよろしくお願いします。


読んだ感想などをお寄せください

本記事を読んだ感想や質問などを以下のお問い合せフォームからお寄せください。(お問合せフォームの本文に、本記事のタイトルを入れてください。)


MK’s papa


いいなと思ったら応援しよう!