DESIGN / CODE / INFRA / AI

解説

AIの確認例を毎回変えていない?乱数のseedと抽出したIDを残して比べよう

PythonのRandomとsampleで同じ評価例を抽出し直す練習。seedだけでなく元の一覧・順序・バージョンと選ばれたIDを残す理由を整理。

AIの確認例を毎回変えていない?乱数のseedと抽出したIDを残して比べよう
保存リストを見る →
この記事の道しるべ 5項目

AIへの依頼文をA案とB案で比べたのに、試した入力まで毎回違っていた。結果の差が依頼文の違いなのか、問題の違いなのか分かりにくくなるよ。

このページでは、確認に使う例をランダムに選び、同じ条件で取り出し直す方法を紹介する。Python 3.12と架空の問題IDだけで試せるので、AIの実行や有料APIは必要ないよ。依頼文の調整用と最終確認用を分ける話に加え、今回は抽出した例の記録に焦点を当てる。

seedは、擬似乱数の開始条件

擬似乱数は、決められた計算で作る乱数の列。seedは、その開始条件に使う値だよ。同じ開始条件から、同じ手順で計算することで、比較用の抽出を再現しやすくなる。

ただし「seedが同じなら、どんな環境でも何もかも同じ」とは考えないでね。元の候補一覧、並び順、呼び出した処理、Pythonの版なども関係する。

小さな一覧から三件を選ぶ

from random import Random

population = ['Q01', 'Q02', 'Q03', 'Q04', 'Q05', 'Q06']
ids = sorted(population)
if len(set(ids)) != len(ids):
    raise ValueError('problem IDs must be unique')

selected = Random(42).sample(ids, k=3)
again = Random(42).sample(ids, k=3)
print(selected)
print(selected == again)
print(population)

Random(42)で専用の生成器を作り、sampleで三件を選ぶ。元のpopulationは変更しないよ。Python 3.12での編集部の検証では、選択結果はQ06・Q01・Q05、二回の一致はTrueになった。

sampleは、このような一意のID一覧なら同じIDを二度選ばない抽出に使える。ただし、元の一覧に同じ値が複数あれば、それぞれの出現位置が選ばれる候補になる。そのため、今回は先にIDの重複を拒否している。

同じ生成器を続けて使う場合との違い

次の例は、毎回開始条件へ戻しているわけではないよ。

rng = Random(42)
first = rng.sample(ids, k=3)
second = rng.sample(ids, k=3)
print(first == second)

生成器の状態は、一回目の抽出で先へ進む。この例の二回の結果は同じではない。比較の途中に別の乱数処理を加えると、後の選択にも影響することがある。

最初の例が二回とも新しいRandom(42)を作っている理由は、同じ開始条件へ戻すためなんだ。

seedと一緒に、選ばれたIDも保存する

確認記録には、少なくとも次を残そう。

記録するもの 確認したいこと
元の資料の版と候補ID一覧 同じ集合から選んだか
抽出前の順序、件数、seed 抽出の条件が同じか
Pythonの版と抽出コード 実行条件が変わっていないか
最後に選ばれたID一覧 実際に何を試したか

Python公式は、randomの多くのアルゴリズムが版をまたいで変わり得ると説明している。sampleの結果を将来もseedだけで保証するのではなく、選択済みIDを記録しておくと、対象を確実に固定できるよ。

比較条件をそろえても、代表性は別

同じ三問で比較できることと、その三問で利用全体を評価できることは別。少数のランダム抽出で、重要な分類や失敗条件が必ず入るとは限らない。分類別の必要件数や境界の例は、目的に合わせて別に計画しよう。

また、ここで固定しているのは評価に使う入力。AIサービスの回答が同じになることを保証する設定ではないよ。

編集部では2026年10月29日にPython公式資料を確認し、本文の抽出結果、元一覧の保持、同じ生成器の状態変化と重複IDの拒否を検証した。AIの回答精度や実サービスの再現性は測っていないよ。調整用と最終確認用の例、評価用の境界ケースも参考になるね。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。