背景
如此处所述http://www.ericharshbarger.org/dice/#gofirst_4d12,“先走”骰子是一组四个骰子,每个骰子都有唯一的编号,因此:
- 任何两个或更多骰子的掷骰都不会导致平局。
- 任何骰子与该组中的任何其他骰子掷出的骰子都有相同的机会“赢/输”该骰子。
以下是提到的四个骰子的编号:
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。