hyakkoのwixoss日記的な

ウィクロス関連 hyakkoTCGの動画で使ったデッキの解説とかそのほか諸々 Twitter→@hyakko_tcg

あなたのそのシャッフル、本当に混ざっていますか?

大学の卒論発表がおわり、無事卒業できそうなひゃっこです。

 

今回は卒論で発表した内容をTCGプレイヤー向けにわかりやすく解説しようかとおもいます

 

 

これが発表時の要綱です(細かく解説するので読まなくて大丈夫です)

f:id:pvmu67369108:20200212123332j:plain

f:id:pvmu67369108:20200212123349j:plain



 




 

シャッフルという単語の解説まで入れていることからわかるかと思いますがTCGを一切知らない人たちに向けた内容になっています。

今回見ている人がある程度TCGを触ったことがあるということを前提に解説していきます

 

 

 

 

 

 

【今回の目的】

試合中のシャッフルの効率化を試みる

 

対戦が始まる直前のゲーム最初のシャッフルであればいくらでも時間をかけてシャッフルしても大丈夫ですが、対戦中のサーチ後のシャッフルなどで時間をかけてシャッフルをしていると場合によっては遅延行為となってしまいます。

 

しかし、相手がサーチ後にほとんどシャッフルを行わなかった場合どう思いますか?

 

「あれ?あやしいな」

と思うかもしれません。

なので今回私は短い時間のなかでより混ざるシャッフルを探しました。

 

 

【シャッフルの種類】

おもにTCGで行われるシャッフルは3種類です。

(なお、今回カットはシャッフルのうちに入れないことにしています)

 

・ヒンズーシャッフル

シャッフルと言われて一番多くの人が思い浮かべるのがこのシャッフルです

f:id:pvmu67369108:20200210142417j:plain

オーバーハンドシャッフル、モンジーンシャッフルも今回はヒンズーシャッフルとして統一します。

 

・ディールシャッフル

〇切りシャッフルと呼ばれることが多いかと思います

f:id:pvmu67369108:20200210142752j:plain

パイルシャッフル、ショットガンシャッフルなどの呼び名がありますが今回ディールシャッフルとします

 

・リフルシャッフル

f:id:pvmu67369108:20200210143104j:plain

は?TCGではこれできんだろ、と思う人も多いかと思います

今回名前はリフルシャッフルとさせていただきますが実際はファローシャッフルを想定しています。

ファローシャッフルとは、通称横入れシャッフル、オタクシャッフルと呼ばれているものになります。

混ざり方がほぼ同じのため説明しやすいリフルシャッフルで統一させていただきます。

 

 

【知ってほしいシャッフルの知識】

リバースシャッフル、パーフェクトシャッフルについて

実は今紹介したシャッフルを利用した2種類のイカサマシャッフルが存在します。

・リバースシャッフル

デッキが40枚の場合ディールシャッフルを8切り→5切りと連続して行うと並び順が元に戻る、というシャッフル

これは〇切り→△切りの

〇×△=デッキ枚数

となる場合成立するシャッフルです

なので割り切るのが難しい9や7以外でシャッフルしている場合は正直混ざっていないのと同じ扱いだと思ってください

 

・パーフェクトシャッフル

リフルシャッフルは基本的に必ず交互に重なるわけではないかと思います

f:id:pvmu67369108:20200210144340j:plain図でいえば左のようになると思います

しかし熟練の手があれば常に右のようにシャッフルできる人もいると思います。

1回2回なら問題ありませんが一定回数連続して右側のシャッフルを行うとこれもまた並び順が元に戻ります。

トランプ(52枚)であれば8回

40枚なら12回、60枚なら58回行うと元に戻ります。

n枚ならp回、式は2^p≡1(mod n-1)です。

基本的には左になると思いますが相手が常にきれいに慎重に半分に分けてリフルシャッフルを行っていた場合は注意したほうがいいかもしれません。

 

カットオフ現象

この現象はリフルシャッフルの回数を重ねていくときある一定回数を超えると急激に混ざる現象のことを指します。

計算上では7回、つまり7回以上リフルシャッフルを行うことで山札はほぼ完ぺきに混ざるという結論が先行研究で出ています*1

 

 

なんだ!じゃあ横入れシャッフル7回すればいいのね!

 

                          ~完~

 

ざんねんながら今回の目的は”試合中”のシャッフルです

毎回サーチするたびに7回リフルシャッフルしてたら時間かかりすぎてしまいます

時間がかかる人では一回7秒、つまり7回で49秒もかかります。そんなに時間はかけられません。ディールシャッフルなんて1回に20秒以上かかります、論外です。

リフルもヒンズーも完璧までの回数の式はどうせ見てもわからないので省きますが、一番時間のかからないヒンズーシャッフルはほぼ完ぺきに混ざったといえるまで200回のシャッフルが必要になります。

もちろんそんなにかけられるわけないですね。

 

なのでシャッフルを2種類混ぜることで効率をよくすることを試みました。

 

【シャッフルの混ざり具合の判断の仕方】

どう混ざったかを判断するのか、という問題ですが混ざり方を図に、数値にすることで判断できるかと思い試しました(以降デッキは40枚とします)

f:id:pvmu67369108:20200210151003j:plain

図のように表示を行い、ヒンズーとリフルシャッフルをプログラムで再現して結果をみてみます

f:id:pvmu67369108:20200210151213j:plain

たとえばこれがヒンズーシャッフルを一回行った結果です。9枚づつ抜き取り上に重ねていった場合このように9枚の塊が4つに残り4枚の塊が1つあることが見てわかりますね。

まぁこれで混ざっているとは言えないと思います

ただ毎回9枚抜き取るわけではないと思います機械でシャッフルしているわけではないので10枚、8枚と毎回違う枚数抜き取ることになるとおもいます

それらをランダムで7~12として10回ヒンズーシャッフル行ってみました

f:id:pvmu67369108:20200210151624j:plain

よく見ると2枚の塊が散らばっているように見えます。

しかしこれでも十分混ざったといえるほうだと思います。

同様にリフルシャッフルも試します

f:id:pvmu67369108:20200210151812j:plain

今回リフルシャッフルはGilbert-Shannon-Reedsモデル(GSRモデル)*2というのを参考にしていますが少し手を加えています。

GSRモデルはトランプを想定していますが今回私はTCGで想定しています。この大きな違いはカードスリーブの有無です。

スリーブがあるとリフルシャッフルがしやすくなる。これを考慮します。

トランプでは

f:id:pvmu67369108:20200210152146j:plain

このように片方から重なりすぎることもあります。が、TCGではスリーブの関係上その確率がかなり低いです。”今回は4回以上連続して重ならない”としてプログラムを組んでいます。

しかし、シャッフルって毎回同じ結果じゃないですよね?

つまり結果1つだけじゃ意味がない

 

ので100回行いました。結果がこちら

ババーン!!

 

って100枚も画像出したら何が何だか分からなくなると思います。

なので平均画像を作成しました

f:id:pvmu67369108:20200210153552j:plain

100回同じシャッフルを行い、結果が重なった回数を10%刻みで可視化し図を重ねていきます

 

【それぞれのシャッフルの結果】

TCGのゲームの中で今回制限時間を40分,シャッフルはゲーム中合計で20回行われているものとします。一度のシャッフルにかける目標時間を15秒にすることでシャッフルにかける時間を全体の12.5%にすることができるため今回最大でも3回のシャッフルでの効率のいいものを探します。

 

ヒンズーシャッフルをH、リフルシャッフルをRとして例えば

ヒンズー→リフル→ヒンズーの順でシャッフルをした場合HRHと表現します。

 

結果がこちら

f:id:pvmu67369108:20200210154103j:plain

みなさんはこのなかだとどれが一番混ざっていると思いますか?

見た目だと

HRRとHHRが混ざっているように見えると思います

多分一番混ざってるんだろうなーと思っている人が多かったであろうリフルシャッフル3回の結果が思ったより散らばっておらず混ざってなさそうという結果になりました。

見た目の判断が正しいとは限りません

ちゃんと数値も出します

f:id:pvmu67369108:20200210154655j:plain

うーん、見てもよくわからんな

そもそもどうなったらいい数字なんだ

 

【ランダム性の数値化】

例えば40枚のカードがちゃんと混ざった場合、ある一枚のカードが一番上になる確率っていくつでしょう?

40分の1ですよね?

40回に1回その位置にあれば混ざってるといえると思います。

つまり今回100回行ったので2回か3回重なってればいいわけです。

先ほどの表の10%の部分から2回3回重なった数だけ取り出します

f:id:pvmu67369108:20200210160617j:plain

ついでにグラフにしちゃいます

f:id:pvmu67369108:20200210160726j:plain

HRRが一番よさそうですね

 

さっきの図と合わせてみます

 

f:id:pvmu67369108:20200210170035j:plain

一見散らばっているようにみえるHHRも数値でみると混ざっていないとわかります

 

 

【結果】

HRRの順でシャッフルをおこなうことで短い時間である程度混ぜることができる。

 

という結果になりました。

正直シャッフルのプログラムやランダム性の数値化などはまだ完璧なものとは言えないので絶対正しいってことはないです

だれか代わりに研究してくれ(投げやり)

 

TCGによっては二種類以上シャッフルを混ぜることとされているものもありますが今回の結果からHRRでのシャッフルは混ざっているとみられるのでこのシャッフルでいいかとおもいます。

シャッフルにかける時間を短くして試合を円滑に進めましょう。

 

 

 

 

いかがだったでしょうか

一介の学生の卒論としてはそれなりのものを作れたかと思います。

 

ご意見ご感想あればTwitterをやっているのでそちらのほうでよろしくお願いします。

それでは~

 

 

*1:P,Diaconis.The cutoff phenomenon for randomizedriffle shufflesWiley InterSciencepp.346-374(2007)

*2:E,Gilbert.Theory of shufflingTechnical memoran-dumBell Laboratories(1955)