忍者ブログ

GameDesign 西部劇TRPG開発日誌

[つれづれ]サイコロでシャッフルしてしまう方法


 サイコロで完全にランダムなシャッフルをしてしまう方法です。
 フィッシャー =イェーツ・シャッフルというアルゴリズムがあります。確率的に正しい、そして計算量が最小の手順です。
 ちょっと前に大変話題になりました。

 アナログゲームでは用はないかも知れませんが、多面体のサイコロでシャッフルしてしまう方法です。

 フィッシャー =イェーツ・シャッフルのWikiはこちら
 このうちのダステンフェルドの手法のアルゴリズムのイメージは、こちらで目視できます。目視できるのは非常に参考になります。

 サイコロで行う場合、単純に、
 12面体、10面体、8面体、6面体、4面体サイコロを用いて、6までの数をシャッフルするものとします。

 考え方としては、まず、6の階乗、6×5×4×3×2×1=720通りの順列がある。
 12面体、10面体、8面体、6面体、4面体サイコロを振り、それぞれの出目を1/2(切り上げ)とすると、6、5、4、3、2通りとして、720通りの乱数を得られる。
 サイコロの種類からすると、6までの数をシャッフルするのならば、振り直しなしで、一度に12面体、10面体、8面体、6面体、4面体サイコロを振ると順列を得られると言えます。

 振り直しなしなら、6までのシャッフルが限界です。7通りの乱数が出せません。カードがなくてカード的処理が必要になったとき、いざという手として載せておきます。

 カードは完全にシャッフルするのは難しいですが、かなり素早く順列を得られる、いい乱数発生器です。

PR