見出し画像

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

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

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

課題の2つの確率変数$${X,Y}$$に対する同時分布を求めるプログラムを作成することができたでしょうか。


解答例

今回の課題の$${X}$$と$${Y}$$の同時分布を求めるプログラムの例を示します。

// 2枚の硬貨を同時に投げる試行を2回行う。
// 1回目の試行で表の出る枚数をX、2回目の試行で表の出る枚数をYとするとき、
// XとYの同時分布を求める
void setup(){

  // 2回の試行でのすべての場合の数
  int all_event_num = 2*2*2*2; 
  
  // 場合の数
  int[][] nc = {{0,0,0},{0,0,0},{0,0,0}};//new int[3][3]; 
  // 同時分布P
  float[][] p = new float[3][3];

  int x; // 1回目の試行で表が出た枚数
  int y; // 2回目の試行で表が出た枚数
  for(int c11=0; c11<=1; c11++){ // 1回目の試行での1枚目の裏表
    for(int c12=0; c12<=1; c12++){ // 1回目の試行での2枚目の裏表
      for(int c21=0; c21<=1; c21++){ // 2回目の試行での1枚目の裏表
        for(int c22=0; c22<=1; c22++){ // 2回目の試行での2枚目の裏表
          x = c11+c12; // 1回目の試行での表の数
          y = c21+c22; // 2回目の試行での表の数
          nc[x][y] = nc[x][y] + 1; // x,yとなる場合の数を数える
        }
      }
    }
  }

  // XとYの同時分布を算出する
  for(int i=0; i<=2; i++){
    for(int j=0; j<=2; j++){
      p[i][j] = (float)nc[i][j] / all_event_num;
    }
  }
  
  // 算出した同時分布をコンソールに出力
  for(int i=0; i<=2; i++){
    println(p[i][0],p[i][1],p[i][2]);
  }
}

ソースコード2 $${X}$$と$${Y}$$の同時分布を求めるプログラム(完成版)

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

0.0625 0.125 0.0625
0.125 0.25 0.125
0.0625 0.125 0.0625

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

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

なお、これらの値は表で表すと

$$
\begin{array}{c||ccc|c}
\hline
X \backslash Y & 0 & 1 &  2 & \mathrm{計} \\
\hline \hline
0 & 1/16 & 1/8 & 1/16 & 1/4 \\
1 & 1/8 & 1/4 & 1/8 & 1/2 \\
2 & 1/16 & 1/8 & 1/16 & 1/4 \\
\hline
\mathrm{計} & 1/4 & 1/2  & 1/4 & 1 \\
\hline
\end{array}
$$

となっています。


本日は以上です。
明日は、確率変数の和と積について考えていきます。

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


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

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


MK’s papa


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