基本情報技術者試験過去問 令和7年度(2025年)科目B問5
次の記述中のaとbに入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。
予防接種の病気Xに対する予防効果を調査するために集めたデータの集計結果を基に,病気Xにかかるかどうかが,予防接種の有無に影響されないと仮定した場合の人数を計算する。この人数を理論度数という。表1に集計結果の例を示し,表2に表1を基に計算した理論度数を示す。
関数fは,引数dataで受け取った集計結果を基に計算した理論度数を返す。引数と戻り値は二次元配列で,その行が表の行,その列が表の列に対応する。

-----------
〔プログラム〕
○実数型の二次元配列: f(実数型の二次元配列: data)
実数型: t ← dataの要素の和
整数型: row ← dataの行数
整数型: col ← dataの列数
実数型の二次元配列: result ← {row行col列の 未定義の値}
整数型: r, c
for (rを1からrowまで1ずつ増やす)
for (cを1からcolまで1ずつ増やす)
result[r, c] ← (dataの行番号rの要素の和) ×
(dataの列番号cの要素の和) ÷ t
endfor
endfor
return result
-----------

選択肢
- ア
- イ
- ウ
- エ
- オ
- カ
- キ
正解と解き方・学習ポイント(AI解説)
理論度数は、病気Xにかかるかどうかと予防接種の有無が独立だと仮定し、各マスの人数を(行合計×列合計)÷総合計で求めます。表1から総合計は154、行合計は(予防接種あり88、なし66)、列合計は(かからなかった140、かかった14)です。よってa=88×140÷154=80、b=66×14÷154=6となり、組合せは「オ」です。
Point
この問題は、集計表を二次元配列として扱い、独立を仮定したときの理論度数を(行合計×列合計)÷総合計で計算できるかを確認することがねらいです。
解くために必要な知識
この問題を解くには、理論度数(期待度数)の定義と、表(集計表)を行・列の合計で扱う考え方が必要です。
用語の整理
| 用語 | 内容 |
|---|---|
| 二次元配列 | 行と列で値を持つ配列です。集計表の行と列に対応させて扱います。 |
| 行合計 | 表の同じ行にある値の合計です。 |
| 列合計 | 表の同じ列にある値の合計です。 |
| 総合計 | 表にある全ての値の合計です。 |
| 理論度数 | 2つの分類(この問題では「予防接種の有無」と「病気Xにかかるかどうか」)が独立だと仮定したときの人数です。 |
理論度数の計算式
理論度数は次の式で求めます。
理論度数 = (行合計 × 列合計) ÷ 総合計
プログラムfがしていること
-
tにdata全体の合計(総合計)を入れます。
-
result[r, c]に、行rの合計と列cの合計を掛けて、tで割った値を入れます。
-
これにより、表2の各マスの理論度数を計算しています。
問題の解法手順
解く手順
1. 表1の値を整理する
表1(集計結果)は次のとおりです。
| 病気Xにかからなかった | 病気Xにかかった | |
|---|---|---|
| 予防接種を受けた | 82 | 6 |
| 予防接種を受けていない | 58 | 8 |
2. 総合計 t を求める
t = 82 + 6 + 58 + 8 = 154
3. 行合計と列合計を求める
行合計
-
予防接種を受けた行:82 + 6 = 88
-
予防接種を受けていない行:58 + 8 = 66
列合計
-
病気Xにかからなかった列:82 + 58 = 140
-
病気Xにかかった列:6 + 8 = 14
4. a と b を理論度数の式で計算する
プログラムの代入文は、次の計算をしています。
result[r, c] = (行rの合計) × (列cの合計) ÷ t
表2より、a と b は次のマスです。
-
a:行「予防接種を受けた」× 列「病気Xにかからなかった」
-
b:行「予防接種を受けていない」× 列「病気Xにかかった」
計算
-
a = 88 × 140 ÷ 154 = 80
-
b = 66 × 14 ÷ 154 = 6
よって、a = 80、b = 6 なので正解は「オ」です。
選択肢ごとの解説
- ア:不正解
a=44、b=33は、理論度数の式(行合計×列合計)÷総合計で計算した値になりません。よって誤りです。
- イ:不正解
a=58、b=8は、表1の観測度数(実際の集計値)をそのまま使った形であり、理論度数の計算結果になりません。よって誤りです。
- ウ:不正解
a=70、b=7は、行合計と列合計、総合計から理論度数を計算した値と一致しません。よって誤りです。
- エ:不正解
a=75、b=2は、理論度数の式で求めた結果と一致しません。よって誤りです。
- オ:正解
a=80、b=6は、a=88×140÷154=80、b=66×14÷154=6となり、理論度数の定義に一致します。よって正解です。
- カ:不正解
a=80は一致しますが、b=8は観測度数であり、理論度数b=66×14÷154=6と一致しません。よって誤りです。
- キ:不正解
a=82、b=6は、aが観測度数82になっており、理論度数a=88×140÷154=80と一致しません。よって誤りです。
まとめ
理論度数は、病気Xにかかるかどうかと予防接種の有無が独立だと仮定し、各マスの人数を(行合計×列合計)÷総合計で求めます。表1から総合計は154、行合計は(予防接種あり88、なし66)、列合計は(かからなかった140、かかった14)です。よってa=88×140÷154=80、b=66×14÷154=6となり、組合せは「オ」です。
a=44、b=33は、理論度数の式(行合計×列合計)÷総合計で計算した値になりません。よって誤りです。
a=58、b=8は、表1の観測度数(実際の集計値)をそのまま使った形であり、理論度数の計算結果になりません。よって誤りです。
a=70、b=7は、行合計と列合計、総合計から理論度数を計算した値と一致しません。よって誤りです。
a=75、b=2は、理論度数の式で求めた結果と一致しません。よって誤りです。
a=80、b=6は、a=88×140÷154=80、b=66×14÷154=6となり、理論度数の定義に一致します。よって正解です。
a=80は一致しますが、b=8は観測度数であり、理論度数b=66×14÷154=6と一致しません。よって誤りです。
a=82、b=6は、aが観測度数82になっており、理論度数a=88×140÷154=80と一致しません。よって誤りです。