我正在尝试在范围内创建成对的随机整数[0,n)
。我需要确保对于任何输入n
,创建的数字,比如 p,q 是这样的p != q
我尝试使用java.util.Random
with以便seed
我可以重现结果..我尝试了输入100,200,400,800
,他们都创建了 p,q 这样p !=q
.但是在 1600 时有两对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);
}
这给了
692 equals 692
843 equals 843
我确信有某种方法可以确保 p != q 对于任何输入 n .. 但我不记得所需的数学
有人可以帮忙吗?