2

我正在用 Java 制作一个需要骰子的游戏。攻击者有 3 个骰子,防御者有 2 个骰子。这是我将所有骰子的眼睛随机化的代码:

        if (attacker.getArmies() > 1)
            aDices[0] = random.nextInt(6) + 1;
        if (attacker.getArmies() > 2)
            aDices[1] = random.nextInt(6) + 1;
        if (attacker.getArmies() > 3)
            aDices[2] = random.nextInt(6) + 1;
        if (defencer.getArmies() > 0)
            dDices[0] = random.nextInt(6) + 1;
        if (defencer.getArmies() > 1)
            dDices[1] = random.nextInt(6) + 1;

但是为什么“防御”骰子的数量大多高于“攻击”骰子呢?

我正在使用 java.util.Random 中的 Random 类

4

3 回答 3

3

看到您使用完全相同的功能进行攻击和防御,攻击者的结果在结构上更高是根本不可能的。您可以尝试说服自己的是编写一个小函数,将骰子掷骰子 100 次作为攻击和防御并计算平均值。即使那样,仍然有可能在 100 次之后,攻击赢得 100 次,不太可能,但可能。这就是随机性的本质。

对于一些背景信息,这是一篇关于随机性的简短读物:

http://engineering.mit.edu/live/news/1753-can-a-computer-generate-a-truly-random-number

于 2012-10-13T13:18:31.833 回答
0

看起来你展示的代码比原来的 Risk 给防御者更多的优势;

if (attacker.getArmies() > 1)          // 1 army will never roll the dice
    aDices[0] = random.nextInt(6) + 1;
  • 攻击者在每支军队(1-3)攻击时获得 1 次骰子。你给他0-2。这意味着单兵进攻永远不会成功。
  • 防守者每防守一支军队(1-2)获得 1 次骰子。你给他1-2。

与最初的风险相比,这将使比赛更倾向于防守者,所有这些都不会得到有偏见的随机数

于 2012-10-13T13:33:30.190 回答
0

也许您应该将 Random 类与 PC 时钟中的时间戳结合使用。它被称为随机化器的种子。

于 2012-10-13T13:15:19.090 回答