DESIGN / CODE / INFRA / AI

解説

ABとBAを別に数える?AIへ組み合わせを頼む前に順序の条件を決めよう

3人から2人を選ぶ例で、組み合わせ3通りと順列6通りを比較。重複して選べるか、同じ名前の人をどう識別するかも整理。

ABとBAを別に数える?AIへ組み合わせを頼む前に順序の条件を決めよう
保存リストを見る →
この記事の道しるべ 5項目

3人から2人のペアを作るようAIへ頼んだら、ABとBAが別々に出てきた。間違いかどうかは、二人の順番に意味があるかで変わるよ。

このページでは、組み合わせと順列という二つの数え方を、A・B・Cの架空の3人で比べる。紙とペンだけでも確認できるよ。コードを試すならPython 3.12を使い、外部サービスやAIアカウントは必要ないんだ。

役割のない二人組なら3通り

同じ担当として二人を選ぶなら、AとBを選ぶこととBとAを選ぶことを、別のチームとして数えない場合が多い。このように順番を区別せず選ぶものを、組み合わせと呼ぶよ。

AB
AC
BC

3人から重複なしで2人を選ぶと、この3通りになる。AAのように同じ人を二度選ぶことは、今回の条件には含めていないよ。

二つの役割へ割り当てるなら6通り

「最初が司会、次が記録」という役割を付けると、ABはAが司会・Bが記録。BAはBが司会・Aが記録だから、意味が違う。順番を区別した並べ方を順列と呼ぶんだ。

AB AC BA BC CA CB

最初の役割が3通り、二番目が残り2通りなので3×2=6通り。役割のないチームでABとBAを同じとするなら、その二重分を数えない3通りになるよ。

Pythonで一覧を照合する

from itertools import combinations, permutations

people = ['A', 'B', 'C']
teams = [''.join(pair) for pair in combinations(people, 2)]
roles = [''.join(pair) for pair in permutations(people, 2)]
print(teams, len(teams))
print(roles, len(roles))

combinationsは順番を区別しない選択、permutationsは順番を区別する並びを列挙する。この入力では、上の3件と6件に一致するよ。コードがAIへ問い合わせているわけではなく、標準の道具で確認する例なんだ。

同じ名前でも同じ人とは限らない

これらの関数は、入力の位置に基づいて要素を扱う。入力に同じ表示名が二つあると、表示上同じ結果が出ることもあるよ。

同姓同名を区別する必要があるなら、先に社員IDなどの一意の番号を持たせよう。文字列が同じだから一人へまとめると、組み合わせを数える前に別の情報を失うことになる。今回のA・B・Cは、それぞれ別の一人を表している。

AIへ渡す依頼文の例

「A・B・Cから重複なしで2人のチームを列挙。役割や並び順はなく、ABとBAは同じ1組。人数は増減しない。各組と総件数を示し、同じ組の重複がないことを確認」と伝えられる。

結果の件数が合っていても、組を一つ重複させて別の組を抜かしているかもしれない。総件数と、実際に列挙した一覧の両方を比べよう。

2026年10月29日にPython公式資料と照合し、一覧と件数、入力が少ない場合の結果をPython 3.12で検証した。重複を決めるキー、同点の順位ルールも、数える前の条件づくりに役立つよ。

参考・出典

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

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

更新・訂正の方針 →

みんなのコメント 0

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

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