解説
ABとBAを別に数える?AIへ組み合わせを頼む前に順序の条件を決めよう
3人から2人を選ぶ例で、組み合わせ3通りと順列6通りを比較。重複して選べるか、同じ名前の人をどう識別するかも整理。

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組。人数は増減しない。各組と総件数を示し、同じ組の重複がないことを確認」と伝えられる。
結果の件数が合っていても、組を一つ重複させて別の組を抜かしているかもしれない。総件数と、実際に列挙した一覧の両方を比べよう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。