0

1、2、3、および 4 のうち 2 つの乱数が必要ですが、同じにすることはできず、2 つの異なる変数でそれらが必要です。

rnd1 = 1;とのようなものrnd2 = 3;です。

私はそれらを古典的なスタイルで生成しようとしました: int rnd = new Random().nextInt(3) + 1;. もう一方も同じ方法ですが、一致しないようにするにはどうすればよいですか? どうやってするか?

4

5 に答える 5

8

ランダム性と単一性を自分で実装するのではなく、許可された番号をリストに入力し、シャッフルして最初の2つのエントリを取得するだけです。

List<Integer> list = Arrays.asList(1, 2, 3, 4);
Collections.shuffle(list);
rnd1 = list.get(0);
rnd2 = list.get(1);
于 2013-03-16T20:00:31.700 に答える
6
Random random = new Random();
int rnd1 = random.nextInt(3) + 1;
int rnd2 = rnd1;
while(rnd2 == rnd1) {
    rnd2 = random.nextInt(3) + 1;
}
于 2013-03-16T19:59:32.547 に答える
3

さて、最も簡単な方法は次のとおりです。

Random random = new Random();
int rnd1 = random.nextInt(3) + 1;
int rnd2;
do {
    rnd2 = random.nextInt(3) + 1;
} while (rnd1 == rnd2);
于 2013-03-16T20:00:39.363 に答える
1

最初の値を2番目の値に割り当て、2つの値が等しくなくなるまでwhileループを使用します。

int rnd = new Random().nextInt(3) + 1;
int rnd2 = rnd;

while(rnd2 == rnd){
  rnd2 = new Random().nextInt(3) + 1;
}
于 2013-03-16T19:59:20.613 に答える
-1
    int one, two;
    Random r = new Random();
    one = r.nextInt(3) + 1;
        two = r.nextInt(3) + 1;
    while (one == two){
            two = r.nextInt(3) + 1;
于 2013-03-16T20:00:14.827 に答える