2

こんにちは、次のタスクがあります。

まず、乱数を 100 回生成するメソッドを使用する次のコードが与えられます。

public class Q3 {
    public static void printDiceRolls(Random randGenerator) {

        for (int i = 0; i < 100; i++) {
            System.out.println(randGenerator.nextInt(6) + 1);
        }
    }

    public static void main(String[] args) {
        Random man = new Random();
        printDiceRolls(man);
    }
}

LoadedDice次に、クラスを拡張するクラスを作成するよう求められますRandom

public class LoadedDice extends Random {
    // instance variables - replace the example below with your own
    public int nextInt(int num) {
        // code right here
        return 3;
    }
}

次に、をオーバーライドpublic int nextInt ( int num )して次のことを行うように求められます

public int nextInt(int num) メソッドをオーバーライドして、50% の確率で新しいメソッドが常に可能な限り最大の数 (つまり num-1) を返し、50% の確率で Random の nextInt メソッドが返すものを返すようにします。戻る

この場合、オーバーライドされたメソッドが何をすべきかよくわかりません。

提案?

4

4 に答える 4

1

別の Random インスタンスを使用して 50% の確率 (例: nextInt(100) >= 50) を与え、それに基づいて定数または実際の乱数を返します。

于 2013-03-08T00:36:55.427 に答える
1

これを行う1つの方法は、(別の?)乱数ジェネレーターを一様分布で使用し、0または1を返すように設定することだと思います.0/1は、決定を下す50%になります.... super.nextInt または最大数を返します。

于 2013-03-08T00:38:31.393 に答える