見出し画像

高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)8日目「二項分布を考える」解説

マガジンリスト > 数学B編 4.確率分布と統計的な推測 > 8日目 解説

本日の課題、おつかれさまでした。

課題の二項分布による期待値、分散及び標準偏差を求めるプログラムを作成することができたでしょうか。


解答例

今回の課題(1)の、二項分布による期待値、分散及び標準偏差を求めるプログラムの例を示します。

// 二項分布の平均、分散と標準偏差を計算する
void setup(){

  int n = 8; // 試行回数
  float p = 1.0/2.0; // 成功確率

  float m = 0.0; // 平均
  for(int r=0; r<=n; r++){
    m = m + r * binomialdistribution(n, p, r);
  }
  
  float v = 0.0; // 分散
  for(int r=0; r<=n; r++){
    v = v + (r-m) * (r-m) * binomialdistribution(n, p, r);
  }
  
  // 標準偏差
  float sigma = sqrt(v);

  // 定義による計算結果と公式による計算結果ををコンソールに出力
  println("定義による計算結果 平均:",m, "分散:", v, "標準偏差:", sigma);
  println("公式による計算結果 平均:",n*p, "分散:", n*p*(1.0-p), "標準偏差:", sqrt(n*p*(1.0-p)));

}

// 二項分布の関数
float binomialdistribution(
  int n, // 試行回数
  float p, // 成功確率
  int r // 確率変数の値
){
  float P = combination(n,r) * pow(p, r) * pow(1.0-p, n-r);
  return P;
}

// 異なるn個のものからr個を取る組合せの総数
int combination(int n, int r){
  
  int p = 1; // 組合せの総数の分子
  int q = 1; // 組合せの総数の分母
  for(int i=0; i<r; i++){ 
    p = p * (n-i);
    q = q * (r-i);
  }
  int c = p / q; // 組合せの総数を計算

  return c; // 組合せの総数を返す
}

ソースコード2 二項分布の平均、分散と標準偏差を求めるプログラム(完成版)

ソースコード2を、Processing の開発環境ウィンドウを開いて(スケッチ名を「MeanandVariance_BinomialDistribution」とします)、テキストエディタ部分に書いて実行すると、コンソールに

定義による計算結果 平均: 4.0 分散: 2.0 標準偏差: 1.4142135
公式による計算結果 平均: 4.0 分散: 2.0 標準偏差: 1.4142135

と出力されます(図1)。

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

定義による計算結果と公式による計算結果が一致していることがわかります。

また、課題(2)については、ソースコード1の

  int n = 8; // 試行回数
  float p = 1.0/2.0; // 成功確率

の部分を、

  int n = 5 ; // 試行回数
  float p = 1.0/4.0; // 成功確率

に書き換えて実行すると、コンソールに

定義による計算結果 平均: 1.25 分散: 0.9375 標準偏差: 0.96824586
公式による計算結果 平均: 1.25 分散: 0.9375 標準偏差: 0.96824586

と出力されます。
課題(3)については、同様に

  int n = 12; // 試行回数
  float p = 2.0/3.0; // 成功確率

に書き換えて実行すると、コンソールに

定義による計算結果 平均: 8.000001 分散: 2.6666665 標準偏差: 1.6329931
公式による計算結果 平均: 8.0 分散: 2.6666665 標準偏差: 1.6329931

と出力されます。
課題(2),(3)については、実際に確かめておいてください。


本日は以上です。
明日は、連続型確率変数について考えていきます。

明日もよろしくお願いします。


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

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


MK’s papa


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