我试图在范围内创建成对的随机整数[0,n).我需要确保对于任何输入n,创建的数字,比如p,q就是这样的p != q
我试图用java.util.Random与seedsothat我可以重现的结果..我试着输入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 ..但我不记得所需的数学
有人可以帮忙吗?
只要继续挑选,直到它们不匹配.
int p = ran.nextInt(size);
int q;
do {
q = ran.nextInt(size);
} while(p==q);
Run Code Online (Sandbox Code Playgroud)