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

たぶん、PCクロックからのタイムスタンプと組み合わせてRandomクラスを使用する必要があります。これは、ランダマイザーのシードと呼ばれます。

于 2012-10-13T13:15:19.090 に答える
0

あなたが示しているコードは、元のリスクよりも防御側に多くの利点を与えているように思われます。

if (attacker.getArmies() > 1)          // 1 army will never roll the dice
    aDices[0] = random.nextInt(6) + 1;
  • 攻撃者は、攻撃する軍(1-3)ごとに1つのサイコロを振る。あなたは彼に0-2を与えています。つまり、1つの軍隊による攻撃は決して成功しないということです。
  • 防御側は、防御する軍(1-2)ごとに1つのサイコロを振る。あなたは彼に1-2を与えています。

これにより、ゲームは元のリスクよりも防御側に傾くことになりますが、すべてバイアスのある乱数を取得することはありません。

于 2012-10-13T13:33:30.190 に答える