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

基本情報技術者 2019年 秋期 午前(科目A) 問06


問題文

Random()は、0以上未満の整数を一様な確率で返す関数である。整数型の変数A, B及びCに対して次の一連の手続を実行したとき、Cの値が0になる確率はどれか。    A = Random(10)  B = Random(10)  C = A - B

選択肢

ア:
イ:
ウ:(正解)
エ:

🔒 解説は解答すると表示されます

差がゼロとなる確率【午前解説】

正解の理由

A と B はどちらも Random(10) なので、0〜9 の10通りの整数をそれぞれ一様な確率でとる独立な値です。C = A − B が0になるのは A = B のときだけで、そのような組は (0,0), (1,1), …, (9,9) の10組です。全体の組合せは 通りなので、確率は です。したがって正解は ウ です。
(別の見方:A がどの値をとっても、B がそれと同じ値になる確率は です。)

解法ステップ

  1. A と B の組合せの総数を数える: 通り。
  2. C = 0 となる組(A = B)を数える:10組。
  3. 確率 = 。
  4. 選択肢と照合して ウ()を選ぶ。

選択肢別の誤答解説

  • ア:
    A = B となる組を (0,0) の1組だけと数えたり、全組合せ100通りのうち特定の1組の確率と取り違えたりすると出る値です。
  • イ:
    A と B の範囲を合わせて20通りと考えるなど、場合の数を取り違えると出る値です。
  • ウ: (正解)
    100通りのうち A = B の10組です。
  • エ:
    C = 0 だけでなく C = ±1 なども数えてしまうなど、条件を広げると出やすい値です。

よくある誤解

  1. Random(10) を「1以上10以下」と考える誤り。問題文のとおり「0以上 未満」なので 0〜9 です(本問の確率はどちらでも同じですが、値の範囲を問う問題では差が出ます)。
  2. A と B が独立であることを忘れ、A の値によって B の値が決まると考える誤り。

補足コラム

一般に、Random(m) と Random(n) を独立に呼び出して X(0〜m−1)と Y(0〜n−1)を得たとき、 です。本問は なので です。
import random
N = 1000000
count = 0
for _ in range(N):
    A = random.randrange(10)
    B = random.randrange(10)
    if A - B == 0:
        count += 1
print(count / N)  # おおむね0.1 に収束

FAQ

Q1. B が Random(20) なら確率は?
A1. 全組合せは 通り、A = B となる組は10組なので になります。
Q2. 「C の値が1になる確率」は?
A2. A − B = 1 となる組は (1,0), (2,1), …, (9,8) の9組なので です。

関連キーワード: 一様分布、独立事象、場合の数、確率、乱数
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する→

すぐに利用可能!

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

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