メインコンテンツへスキップ
見出し画像

高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)6日目「確率変数の和と積を考える1」

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

    おはようございます。

    本日は、高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)の6日目です。

    本日の課題は、確率変数XXとYYの和に対する期待値、分散及び標準偏差を求めるプログラムを作成することです。


    確率変数の和と積

    まず、確率変換の和と積について解説しておきます。

    確率変数の和と期待値

    X,YX,Yは確率変数、a,ba,bは定数とする。
    E(X+Y)=E(X)+E(Y) E(X+Y)=E(X)+E(Y)
    E(aX+bY)=aE(X)+bE(Y) E(aX+bY)=aE(X)+bE(Y)


    確率変数の独立

    2つの確率変数X,YX,Yがあって、XXのとる任意の値aaと、YYのとる任意の値bbについてP(X=a,Y=b)=P(X=a)P(Y=b)P(X=a, Y=b)=P(X=a)P(Y=b)が成り立つとき、確率変数XXとYYは互いに独立であるという。


    独立な確率変数の積の期待値、和の分散

    X,YX,Yは互いに独立な確率変数、a,ba,bは定数とする。

    独立な確率変数の積の期待値
    E(XY)=E(X)E(Y) E(XY) = E(X)E(Y)

    独立な確率変数の和の分散
    V(X+Y)=V(X)+V(Y)V(X+Y)=V(X)+V(Y),  V(aX+bY)=a2V(X)+b2V(Y)V(aX+bY)=a^2V(X)+b^2V(Y)


    課題

    10円硬貨1枚と100円硬貨1枚を同時に投げるとき、表の出た硬貨の金額の和の期待値と標準偏差を求めるプログラムを作成してください。


    2つの解法

    今回の課題は、2つの方法で表の出た硬貨の金額の和の期待値と標準偏差を計算することができます。1つ目は、同時分布を利用してE(aX+bY),V(aX+bY)E(aX+bY), V(aX+bY)を計算する方法です。今回はこの方法で行います。2つ目は確率変数の独立性を利用して先にE(X),E(Y),V(X),V(Y)E(X),E(Y),V(X),V(Y)を求めてその後aE(X)+bE(Y)aE(X)+bE(Y)やa2V(X)+b2V(Y)a^2V(X)+b^2V(Y)を計算する方法です。こちらは次回(7日目)に行います。


    アルゴリズム設計 

    XXを10円硬貨の裏が出たとき 0 、表が出たとき 1 となる確率変数とし、YYを100円硬貨の裏が出たとき 0 、表が出たとき 1 となる確率変数とします。このとき、この課題の同時分布は

    X\Y01計01/41/41/211/41/41/2計1/21/21\begin{array}{c||cc|c} \hline X \backslash Y & 0 & 1 & \mathrm{計} \\ \hline \hline 0 & 1/4 & 1/4 & 1/2 \\ 1 & 1/4 & 1/4 & 1/2 \\ \hline \mathrm{計} & 1/2 & 1/2 & 1 \\ \hline \end{array}

    となります。今回は、この同時分布を利用して、表の出た硬貨の金額の和の期待値mmと標準偏差σ\sigmaを計算します。

    m=E(10X+100Y)=∑x=01∑y=01(10x+100y)px,ym=E(10X+100Y) = \sum_{x=0}^1 \sum_{y=0}^1 (10x+100y)p_{x,y}

    v=V(10X+100Y)= ∑x=01∑y=01(10x+100y−m)2px,yv = V(10X+100Y) = \sum_{x=0}^1 \sum_{y=0}^1 (10x+100y -m)^2p_{x,y}

    σ=v\sigma = \sqrt{v}


    プログラム

    今回の課題の同時分布を用いて確率変数の和の期待値と標準偏差を求めるプログラムを示します。

    // 10円硬貨1枚と100円硬貨1枚を同時に投げるとき、
    // 表の出た硬貨の金額の和の期待値と標準偏差を求める。
    // 同時分布を利用
    void setup(){
    
      int a = 10; // 10円
      int b = 100; // 100円 
    
      // 同時分布P
      float[][] p = {{1.0/4.0,1.0/4.0},{1.0/4.0,1.0/4.0}};
    
      // 同時分布による期待値の計算
      float m = 0.0;
      for(int x=0; x<=1; x++){ // 10円硬貨の裏(0)、表(1)
        for(int y=0; y<=1; y++){ // 100円硬貨の裏(0)、表(1)
          m = 
        }
      }
      
      // 同時分布による分散の計算
      float v = 0;
      for(int x=0; x<=1; x++){ // 10円硬貨の裏(0)、表(1)
        for(int y=0; y<=1; y++){ // 100円硬貨の裏(0)、表(1)
          v = 
        }
      }
      
      // 同時分布による標準偏差の計算
      float sigma = sqrt(v);
    
      // 期待値、分散、標準偏差の値をコンソールに出力
      println("期待値 :", m);
      println("分散  :", v);
      println("標準偏差:", sigma);
    }

    ソースコード1 同時分布を用いて確率変数の和の期待値と標準偏差を求めるプログラム(未完成)

    ソースコード1では、同時分布 p を2次元配列で準備して、その同時分布を用いて確率変数の和の期待値 m 、分散 v 及び標準偏差 sigma を求めています。
    ただし、期待値 m と分散 v を計算する部分は未完成です。

      // 同時分布による期待値の計算
      float m = 0.0;
      for(int x=0; x<=1; x++){ // 10円硬貨の裏(0)、表(1)
        for(int y=0; y<=1; y++){ // 100円硬貨の裏(0)、表(1)
          m = 
        }
      }
      
      // 同時分布による分散の計算
      float v = 0;
      for(int x=0; x<=1; x++){ // 10円硬貨の裏(0)、表(1)
        for(int y=0; y<=1; y++){ // 100円硬貨の裏(0)、表(1)
          v = 
        }
      }

    これらの計算の部分を追記してソースコード1を完成させてください。

    なお、スケッチ名は「SumofProbabilityVariables」としてください。

    それでは、よろしくお願いします。


    今回の課題の解説を以下の記事に載せています。課題対応後に確認してください。


    MK's papa

     
     
    ソフトウェア開発会社に勤めて20年。ソフトウェア開発だけでなく、50名以上の新入社員の育成などにも携わり、プログラミングができる人とできない人との違いは高校数学の理解度であることがわかりました。プログラミングを通して高校数学(同時に情報Iも)の理解を深めていきましょう。

    あなたへのおすすめ