在java中生成随机数对,使得p!= q

dam*_*mon 4 java random

我试图在范围内创建成对的随机整数[0,n).我需要确保对于任何输入n,创建的数字,比如p,q就是这样的p != q

我试图用java.util.Randomseedsothat我可以重现的结果..我试着输入100,200,400,800,他们都创造了P,Q这样p !=q.但在16002对用p == 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);

}
Run Code Online (Sandbox Code Playgroud)

这给了

692 equals 692
843 equals 843
Run Code Online (Sandbox Code Playgroud)

我确信有一些方法可以确保p!= q对于任何输入n ..但我不记得所需的数学

有人可以帮忙吗?

Jam*_*gne 6

只要继续挑选,直到它们不匹配.

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

do {
    q = ran.nextInt(size);
} while(p==q);
Run Code Online (Sandbox Code Playgroud)

  • 而且你也可以{...}而(p == q) (7认同)