我试图创建在范围
我尝试使用具有种子的
这提供了。
我确定有一种方法可以确保对于任何输入n,p != q.. 但是我无法回忆起所需的数学知识。有人能帮忙吗?
[0,n)
内的随机整数对。
我需要确保对于任何输入n
,所创建的数字p和q不相等,即p != q
。我尝试使用具有种子的
java.util.Random
,以便能够再现结果。我尝试了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
我确定有一种方法可以确保对于任何输入n,p != q.. 但是我无法回忆起所需的数学知识。有人能帮忙吗?
p
和q
是否相等,如果相等则重新生成一个随机值。 - acdcjuniormax - generatedNumber
,它将始终给出不同的结果。也就是说,如果数字从1开始而不是0。 - fgen
。如果n
是0,它们将总是匹配的。 :) 此外,注意声明这样的种子。您的程序现在将每次都给出相同的结果。 - asteri