4

範囲内のランダムな整数のペアを作成しようとしています[0,n)nどの入力に対しても、作成された数値、たとえば p,q が次のようになるようにする必要があります。p != q

結果を再現できるようjava.util.Randomに withを使用しようとしました..入力を試してみたところ、すべて p,q が作成されました。seed100,200,400,800p !=qp == q

public static void generate(int size){      
    Random ran = new Random();
    ran.setSeed(123456L);       
    for(int i =0;i<size;i++){
        int p = ran.nextInt(size);
        int q = ran.nextInt(size);
        if(p==q)
            System.out.println(p+" equals "+q);
        //else
            //System.out.println(p+" "+q);
    }
}

public static void main(String[] args) {
    generate(1600);

}

これは与えた

692 equals 692
843 equals 843

任意の入力 n に対して p != q であることを確認する方法があると確信していますが、必要な数学を思い出すことができません

誰か助けてくれませんか?

4

4 に答える 4

6

一致しなくなるまで選び続けます。

int p = ran.nextInt(size);
int q;

do {
    q = ran.nextInt(size);
} while(p==q);
于 2013-06-24T13:42:40.297 に答える
4

[0,n) で 1 つの数値を生成し、[0,n-1) でもう 1 つの数値を生成します。

int p = ran.nextInt(size);
int q = ran.nextInt(size-1);

if (q>=p){
    q++;
}
于 2013-06-24T13:45:33.037 に答える