コンピュータで配列をシャッフルする際は、以下のアルゴリズムで行えることが知られている。
- 「シャッフル結果の配列」を空で初期化する
- 「シャッフル対象の配列」から要素をランダムに1個選ぶ
- 選んだ要素を「シャッフル対象の配列」から消し、「シャッフル結果の配列」の最後に追加する
- 「シャッフル対象の配列」が空になるまで、2以降を繰り返す
ところで、物理カードゲームにおいては、カードをシャッフルする前に規則性のある形に並べ替える行為を明示的に禁止するルールを設定している所がある。
『デュエル開始前にデッキを確認しながら並びを入れ替える行為は禁止』
— wktk (@wktk999) April 9, 2026
ってルールブックにしっかり書かれてると思うんですけどマジで一定数
『どうせシャッフルするんだから順番は固定してもよい』
って言ってる人いて怖い。
他のカードゲームってそれはオッケーなのですか? pic.twitter.com/brXg8OudBt
試合前に故意にカードを積み込み、デッキ内に均等になるようにシャッフルをされた方がいらっしゃいました。
— カードランド秋葉原店@ガンダムカードゲーム ONEPIECEカードゲーム デジモンカード (@cardland_akiba) September 26, 2025
下記の通り、マッチの敗北を伝えた後、非紳士行為があった為、失格となりました。
中には悪意なく"カードが散るコツ"ぐらいの感覚で行っている方もいるかもしれませんが、お気をつけください pic.twitter.com/JTgkvm962R
一方、この行為を明示的に許可するルールを設定している所もある。
MTGジャッジルール
— DAI@クドウ (@Kudou_MTG) April 10, 2026
IPG3.9より抜粋
『ルール違反』としているTCGもあるでしょう。
ただ「TCGでシャッフル前にカードの並びを操作するのが許された時代なんて無い!積み込みだ!」と言い張っていた人たちは全員「ごめんなさい」をしましょう。
時代どころか現代においてもルールでOKとされています。 pic.twitter.com/yGhYrrBh0b
有名アルゴリズムで偏りがないシャッフルをしてしまえば、シャッフル後の配置はシャッフル前の配置によらなくなり、シャッフル前の配置をどうでもよくできるのではないか……?
物理カードを有名アルゴリズムでシャッフル
このアルゴリズムを物理カードに適用しようとすると、以下のようになるだろう。
- シャッフルするカード一式を裏向きにし、1枚ずつの存在が見やすいように並べる
- その中から適当な1枚を取り、シャッフル結果を置く場所に (既にカードを置いている場合は、その上に) 置く
- シャッフルするカードが無くなるまで、2以降を繰り返す
簡単だね!なんだ、物理カードでもできるじゃん!やろう!
……と言いたいところだが、これには以下のような問題があるだろう。
この手法の問題点
人間の乱数発生力には限界がある
「ランダムな」選択が本当にランダムであれば、このアルゴリズムは有効である。
しかし、人間は無意識に偏りを減らそうとするなどしがちであり、本当にランダムに選択するのは難しい。
さらに、自分で選択すると、ランダムに選択するふりをして自分の欲しい配置にできてしまうかもしれない。
すると、シャッフルどころか完全に真っ黒な積み込みになってしまうだろう。
配置がわかってしまう
人間がランダムに選択するのが難しいなら、選択しなければいい。
ダイスやコンピュータなどを用いてランダムに選択し、人間はその結果に従ってカードを動かすだけ、としたらいいのではないか?
しかし、これではどのカードをどこに置くかの情報が人間に伝わってしまい、シャッフル後はわからないはずのカードの位置がわかってしまう。
全部のカードを覚えるのは難しくても、数枚でも覚えておけばその分 (不正に) 有利になってしまうだろう。
長時間かかる
そもそも、カードを1枚ずつ動かす並べ替えには長時間かかってしまう。
このやり方は、n個の山を使ってのディールシャッフル (n = シャッフルするカードの枚数) とみなすことができそうだ。
ディールシャッフルは長時間かかり、回数が制限される場合もある並べ替えなので、このやり方も不当に長時間かかると考えられる。
餅は餅屋
コンピュータ上でシャッフルを行うのに有効とされる有名なアルゴリズムでも、そのまま物理カードに適用しようとすると問題がありうることがわかった。
カードゲームでよく用いられるヒンズーシャッフル (カードの山から適当な部分を抜いて、一番上に置く) や、ファローシャッフル (カードの山を半分くらいに分け、適当にマージする) を適切な回数繰り返すことで、統計的に適切なシャッフルになるらしい。
やはり対象の性質に応じて適したやりかたとそうでないやり方がある、ということだ。
- 【カードゲーム】きちんとしたシャッフルって何?|chapudding
- 【TCG】確率統計と計算機工学から考える適切なシャッフル【DCG】|chapudding
- 【計算機工学】僕のシャッフル、本当に無作為化できてる?【検証】|chapudding
あとがき
今回の記事、技術的な話が全くと言っていいほど無い気がする……Qiitaじゃなくてnoteでやれ案件か……?
ごめんね……自分の頭が悪いからスケジューリングが下手くそで役立ちそうな記事を書く時間が取れず、短時間で書けそうないいネタも思いつけず、それでも毎週投稿にこだわった結果、怪しい記事を出す結果になってしまい……