基本情報技術者 2019年 秋期 午前(科目A) 問06
問題文
Random()は、0以上未満の整数を一様な確率で返す関数である。整数型の変数A, B及びCに対して次の一連の手続を実行したとき、Cの値が0になる確率はどれか。
A = Random(10)
B = Random(20)
C = A - B
選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
差がゼロとなる確率【午前解説】
正解の理由
A は 0–9 の10通り、B は 0–19 の20通りをそれぞれ一様にとる独立な乱数です。C = A − B が 0 になるのは A = B のときだけで、起こり得る同値の組は (0,0),(1,1),…,(9,9) の10組です。全事象の数は 通りであり、よって確率は となります。したがって正しい選択肢はイ()です。問題データの解答欄は ウ()になっていますが、これは誤りです。
(別の見方として、独立性より と計算できます。)
解法ステップ
- A と B の全ての組み合わせ数を数える: 通り。
- C=0 となる有利な組を列挙する:A=B を満たす (0,0)〜(9,9) の10組。
- 確率は 有利な組数 ÷ 全組数 = 。
- 選択肢と照合して、イ()が一致することを確認する。
選択肢別の誤答解説
-
ア:
全組み合わせを と誤認している可能性があります(例えば と考える誤り)。しかし B の取りうる値は20通りなので全組み合わせは200通りです。 -
イ:
正しい答えです。上記の通り、10個の一致組を200で割った値になります。 -
ウ:
よくある誤りは「A の取りうる値が10通りだから、B がそのどれかに当たる確率は常に 」と考えてしまうことです。しかし B の値が 10〜19 のときは A と等しくなることがそもそも不可能であり、条件付き確率を正しく扱う必要があります。固定した B=b に対して であり、それを B の分布で平均すると になります。 -
エ:
過大評価の例で、例えば「A と B のうち10個が一致候補で、20分の10=1/2 のように考え、さらに別の誤りで縮小して を得る」など、論理的根拠が不十分です。正しい考え方は組合せ数あるいは条件付き確率の直接計算です。
よくある誤解
- 「A の取りうる値が10個だから一致確率は 」とする誤り:B が A と一致するには B の値が 0–9 の範囲にある必要があり、この条件を見落とすと過大評価になります。
- 全事象数を と想定するミス:B の範囲を正しく反映させず、全場合の数を間違えることで確率が歪みます。
補足コラム
一般化すると、Random(m) と Random(n) を独立に呼び出して変数 X(0..m-1)と Y(0..n-1)を得たとき、 です。本問では なので となります。
簡単なシミュレーション(Python):
import random
N=1000000
count=0
for _ in range(N):
A = random.randrange(10)
B = random.randrange(20)
if A-B==0:
count+=1
print(count/N) # おおむね 0.05 (=1/20) に収束
FAQ
Q1: 「もし B も Random(10) なら確率は?」
A1: その場合は全組み合わせ 、一致組は10、したがって確率は になります。
A1: その場合は全組み合わせ 、一致組は10、したがって確率は になります。
Q2: 「C=|A−B| が 0 になる確率は変わりますか?」
A2: 絶対値でも条件は同じく A=B のときだけなので確率は変わらず です。
A2: 絶対値でも条件は同じく A=B のときだけなので確率は変わらず です。
関連キーワード: 一様分布、独立事象、同時分布、場合の数、条件付き確率、確率の一般化、シミュレーション

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

