戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 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組です。全事象の数は 通りであり、よって確率は となります。したがって正しい選択肢はイ()です。問題データの解答欄は )になっていますが、これは誤りです。
(別の見方として、独立性より と計算できます。)

解法ステップ

  1. A と B の全ての組み合わせ数を数える: 通り。
  2. C=0 となる有利な組を列挙する:A=B を満たす (0,0)〜(9,9) の10組。
  3. 確率は 有利な組数 ÷ 全組数 =
  4. 選択肢と照合して、イ()が一致することを確認する。

選択肢別の誤答解説

  • ア:
    全組み合わせを と誤認している可能性があります(例えば と考える誤り)。しかし B の取りうる値は20通りなので全組み合わせは200通りです。
  • イ:
    正しい答えです。上記の通り、10個の一致組を200で割った値になります。
  • :
    よくある誤りは「A の取りうる値が10通りだから、B がそのどれかに当たる確率は常に 」と考えてしまうことです。しかし B の値が 10〜19 のときは A と等しくなることがそもそも不可能であり、条件付き確率を正しく扱う必要があります。固定した B=b に対して であり、それを B の分布で平均すると になります。
  • エ:
    過大評価の例で、例えば「A と B のうち10個が一致候補で、20分の10=1/2 のように考え、さらに別の誤りで縮小して を得る」など、論理的根拠が不十分です。正しい考え方は組合せ数あるいは条件付き確率の直接計算です。

よくある誤解

  1. 「A の取りうる値が10個だから一致確率は 」とする誤り:B が A と一致するには B の値が 0–9 の範囲にある必要があり、この条件を見落とすと過大評価になります。
  2. 全事象数を と想定するミス: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、したがって確率は になります。
Q2: 「C=|A−B| が 0 になる確率は変わりますか?」
A2: 絶対値でも条件は同じく A=B のときだけなので確率は変わらず です。

関連キーワード: 一様分布、独立事象、同時分布、場合の数、条件付き確率、確率の一般化、シミュレーション
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について