4のm行列シャッフル
2008年11月9日 TCG全般フライデーに言った時に、大学院の方から聞いたシャッフル方法。
要するにコンピュータ等での乱数の発生方法の理論を応用した奴で、
それなりにランダムにシャッフルできる方法らしい。
理屈としては、4ビットの領域を用意して、
最初に最下位ビットに1を設定。
後は順に上位にシフトしていって、オーバーフローしたら全体に0011をXORする。
と言うのを延々と繰り返して行くんですね。
で、肝心のカードに関しては4つの行を作っておいて、
上の計算でビットが立っている所にカードを置いていくと。
具体的に数列を書くと
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 1 0 0
0 1 1 0
0 0 1 1
1 1 0 1
1 0 1 0
0 1 0 1
1 1 1 0
0 1 1 1
1 1 1 1
1 0 1 1
1 0 0 1
右利きなので左から順に置いた方がやりやすいので左側に下位ビットを配置しています。
これで、各列に8枚ずつランダムにカードが配置できているはず。
待ち時間に5分ほど暗算しながら練習したら、
何とか普通の速度でシャッフルできるようになりました。
まあ最終的には7切りあたりでやった方が良いのだろうけど、
最初の1回はこれやっておくとよいかもしれないですね。
ちなみに5ビットだと00101をXORすると似たような結果がでるそうで。
こっちは今の頭ではさすがに無理…
起きた後で計算しながら練習してみよう。
要するにコンピュータ等での乱数の発生方法の理論を応用した奴で、
それなりにランダムにシャッフルできる方法らしい。
理屈としては、4ビットの領域を用意して、
最初に最下位ビットに1を設定。
後は順に上位にシフトしていって、オーバーフローしたら全体に0011をXORする。
と言うのを延々と繰り返して行くんですね。
で、肝心のカードに関しては4つの行を作っておいて、
上の計算でビットが立っている所にカードを置いていくと。
具体的に数列を書くと
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 1 0 0
0 1 1 0
0 0 1 1
1 1 0 1
1 0 1 0
0 1 0 1
1 1 1 0
0 1 1 1
1 1 1 1
1 0 1 1
1 0 0 1
右利きなので左から順に置いた方がやりやすいので左側に下位ビットを配置しています。
これで、各列に8枚ずつランダムにカードが配置できているはず。
待ち時間に5分ほど暗算しながら練習したら、
何とか普通の速度でシャッフルできるようになりました。
まあ最終的には7切りあたりでやった方が良いのだろうけど、
最初の1回はこれやっておくとよいかもしれないですね。
ちなみに5ビットだと00101をXORすると似たような結果がでるそうで。
こっちは今の頭ではさすがに無理…
起きた後で計算しながら練習してみよう。
コメント