バックグラウンド
ここhttp://www.ericharshbarger.org/dice/#gofirst_4d12で説明されているように、「Go First」ダイスは、それぞれに固有の番号が付けられた 4 つのサイコロのセットです。
- 2 つ以上のサイコロを振っても引き分けになることはありません。
- セット内の他のダイスに対して振られたダイスは、そのダイスに対して「勝つ/負ける」可能性が等しくなります。
上記の 4 つのサイコロの番号は次のとおりです。
DICE COUNT: 4
FACE COUNT: 12
D1: 1,8,11,14,19,22,27,30,35,38,41,48
D2: 2,7,10,15,18,23,26,31,34,39,42,47
D3: 3,6,12,13,17,24,25,32,36,37,43,46
D4: 4,5, 9,16,20,21,28,29,33,40,44,45
質問
私は数学が苦手です。私は困惑しています。上記の情報を考慮して、サイコロの数を指定して整数 (「サイコロ」) のリストを生成できるようにしたいと考えています。そのため、出力例は次のようになります (フォーマット済み、python コンソール):
>>> generate_dice(players=4)
[[1,8,11,14,19,22,27,30,35,38,41,48],
[2,7,10,15,18,23,26,31,34,39,42,47],
[3,6,12,13,17,24,25,32,36,37,43,46],
[4,5,9,16,20,21,28,29,33,40,44,45]]
ここでの側面の数は、他の例と一致するため、例としてのみ選択されています。それぞれのサイコロの「公平さ」こそが、まさに私が求めているものです。
これは宿題ではないことを保証します。これはただの根っからのオタクで、私を放っておくわけにはいかない一見些細なパズルに悩まされています...そして、何らかの理由で、私はそれを正しく理解できないようです.
ここには比較的簡単な数学と基本的なアルゴリズムが含まれていると確信しており、それが私が探しているものです。これが明らかな場合、どの用語を検索すればよいですか? 私にとって、そうではないからです。
理想的には、解決策は Python であるでしょうが、私は PHP、Javascript、Ruby の一部も十分に読むことができます。