![見出し画像](https://assets.st-note.com/production/uploads/images/166946994/rectangle_large_type_2_37452abc81709bd97a771d7a0116e2a1.jpeg?width=1200)
高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)4日目「確率変数の変換を考える2」
マガジンリスト > 数学B編 4.確率分布と統計的な推測 > 4日目 課題
おはようございます。
本日は、高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)の4日目です。
本日の課題は、前回(3日目)と同様に、変換された確率変数$${Y}$$に対する期待値と分散を求めるプログラムを作成することです。
確率変数の変換
確率変換の変換について再掲しておきます。
確率変数$${X}$$と定数$${a, b}$$に対して$${Y=aX+b}$$とすると、$${Y}$$も確率変数となり、
期待値 $${E(Y)=E(aX+b)=aE(X)+b}$$
分散 $${V(Y)=V(aX+b)=a^2V(X)}$$
標準偏差 $${\sigma(Y) = \sigma(aX+b) = |a| \sigma(X) }$$
課題
数直線上の原点に点$${\mathrm{P}}$$がある。1枚の硬貨を投げて、表が出ると +3 だけ、裏が出ると -2 だけ進む。この試行を3回繰り返すときの表の出た回数を$${X}$$、点$${\mathrm{P}}$$の座標を$${Y}$$とする。
このとき、 $${Y}$$を$${X}$$で表して$${Y}$$の期待値と分散を求めるプログラムを作成してください。
解法の2つの方法
今回の課題は2つの方法で$${Y}$$の期待値と分散を計算することができます。1つ目は確率変数$${X}$$、変換した確率変数$${Y}$$に対する確率分布を求めて、直接、確率変数$${Y}$$の期待値と分散を計算する方法です。前回(3日目)はこちらの方法を利用してプログラムを作成しました。2つ目は確率変数$${X}$$の期待値と分散を計算した後、上記で説明した「確率変数$${X}$$の期待値と分散」と「確率変数$${Y}$$の期待値と分散」との関係式を利用して確率変数$${Y}$$の期待値と分散を計算する方法です。今回はこちらの方法を利用したプログラムを作成します。
アルゴリズム設計
まず、課題の「$${Y}$$を$${X}$$で表して」を考えます。3回繰り返すときの表の出た回数を$${X}$$としているので、3回繰り返すときの裏の出た回数は$${3-X}$$となります。一方、$${Y}$$の値は、「表が出ると +3 だけ、裏が出ると -2 だけ進む」となっていますので、
$$
Y= (+3) \times X + (-2) \times (3-X) = 5X-6
$$
となります。確率変数$${X}$$に対する確率分布が
$$
\begin{array}{c||cccc|c}
\hline
X & 0 & 1 & 2 & 3 & \mathrm{計} \\
\hline \\
P & \frac{1}{8} & \frac{3}{8} & \frac{3}{8} & \frac{1}{8} & 1 \\ \\
\hline
\end{array}
$$
となるので、$${X}$$に対する期待値と分散を計算したあと、上記で示した変換した確率変数$${Y}$$の期待値や分散と$${X}$$の期待値や分散公式との関係式を利用して確率変数$${Y}$$の期待値と分散の計算を行うことができます。
プログラム
今回の課題の$${Y}$$の期待値と分散を関係式を利用して求めるプログラムを示します。
// 関係式を用いた、変換された確率変数の期待値と分散の計算
void setup(){
// 硬貨を3回投げた時の表が出る回数(確率変数)
int[] x = {0,1,2,3};
// 確率分布P
float[] p = {1.0/8.0, 3.0/8.0, 3.0/8.0, 1.0/8.0};
// 確率変数を変換するときの係数
int a = 5;
int b = -6;
// 確率変数Xの期待値の計算
float m_x = 0;
for(int i=0;i<x.length;i++){
m_x = m_x + x[i]*p[i];
}
// 確率変数Xの分散の計算
float v_x = 0;
for(int i=0;i<x.length;i++){
v_x = v_x + (x[i]-m_x)*(x[i]-m_x)*p[i];
}
// 変換された確率変数Yの期待値と分散の計算
float m_y =
float v_y =
// 変換された確率変数の期待値と分散の値をコンソールに出力
println("期待値 :", m_y);
println("分散 :", v_y);
}
ソースコード1 $${Y}$$の期待値と分散を関係式を利用して求めるプログラム(未完成)
ソースコード1では、確率変数の値を表す変数(配列)x とその確率分布を表す変数(配列)p を準備して、まず、確率変数$${X}$$の期待値 m_x 、分散 v_x を求めたあと、関係式を用いて変換された確率変数$${Y}$$の期待値 m_y 、分散 v_y を計算して最後にそれらの結果をコンソールに出力しています。
ただし、変換された確率変数$${Y}$$の期待値 m_y 、分散 v_y を計算する部分は未完成です。
// 変換された確率変数Yの期待値と分散の計算
float m_y =
float v_y =
この計算の部分を追記してソースコード1を完成させてください。
なお、スケッチ名は「transformedProbabilityVariable2」としてください。
それでは、よろしくお願いします。
MK's papa