我正在尝试创建 [0,n)
范围内的随机整数对。
我需要确保对于任何输入 n
,创建的数字,比如 p,q 都是 p != q
我尝试将 java.util.Random
与 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.. 但我不记得需要的数学
有人可以帮忙吗?
最佳答案
继续挑选直到它们不匹配。
int p = ran.nextInt(size);
int q;
do {
q = ran.nextInt(size);
} while(p==q);
关于java - 在 java 中生成随机数对使得 p !=q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17276942/