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

标签 java random

我正在尝试创建 [0,n) 范围内的随机整数对。 我需要确保对于任何输入 n,创建的数字,比如 p,q 都是 p != q

我尝试将 java.util.Randomseed 一起使用,以便我可以重现结果..我尝试输入 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/

相关文章:

c++ - 重新播种 std::rand/c++11 <random>

mysql - 在sql中将列乘以randbetween

java - collections.shuffle 中的默认随机源

java - Spark SQL Java 无法将元组转换为行和数据帧

java - 比较 java 内存堆转储 : Memory profiling for Java desktop application

java - 如何在 JPA 中构建插入查询

java - Color.getColor(String, int) - 随机颜色

java - Java中 "instanceof"的使用

java - 如果存在 Java 8 的 Optional,则方法返回

c++ - `std::sample()`的输出序列是否遵循输入序列的顺序?