如何在java上生成随机唯一数

如何在java上生成随机唯一数,java,arrays,random,Java,Arrays,Random,我是Java新手,我正在尝试为一个游戏随机化不重复的数字。只有在不添加break语句的情况下,我的代码才会生成从1到75的唯一随机数(我必须这样做才能一次只得到一个数字)。我该怎么办?编辑-(我想知道它一直重置的原因是否是因为我多次调用该方法?我不太确定如何修复) publicstaticvoidgennumber(){ 随机=新随机(); int-num; u字串; 字符串字母=”; 使用的哈希集=新哈希集(75); 对于(int i=1;i 0){ num=1+random.nextInt(

我是Java新手,我正在尝试为一个游戏随机化不重复的数字。只有在不添加break语句的情况下,我的代码才会生成从1到75的唯一随机数(我必须这样做才能一次只得到一个数字)。我该怎么办?编辑-(我想知道它一直重置的原因是否是因为我多次调用该方法?我不太确定如何修复)

publicstaticvoidgennumber(){
随机=新随机();
int-num;
u字串;
字符串字母=”;
使用的哈希集=新哈希集(75);
对于(int i=1;i 0){
num=1+random.nextInt(75);
if(已使用。包含(num)){
删除(新整数(num));
u=整数。toString(num);
系统输出打印(u+“\n”);
打破
}
如果(!used.contains(num)){
继续;
}
}

数字是唯一且随机的,但我一次只想要一个数字(不重复)不是一次全部75个。

我将创建一个由75个元素组成的布尔值数组,并将所有值设置为true。创建一个生成一个随机数的方法,并将该值的布尔数组更新为false。每次生成一个数时,请检查数组是否将该值设置为true。然后,您可以一次生成一个数字d不必担心重复。你可以有一个while循环,要求用户输入yes或no,如果用户回答no,它将不会调用你的方法并将while循环条件设置为false。如果用户回答yes,它会调用该方法并继续循环。

也许每次你想要一个新的随机序列时,都会洗牌列表,就像一副牌一样每个元素都保证是唯一的

List<Integer> balls = new ArrayList<>();

for (int i = 1; i <= 75; ++i) {
    balls.add(i);
}

for (;;) {
    // Shuffle the list every 75 draws:

    Collections.shuffle(balls);
    System.out.println(Arrays.toString(balls.toArray()));

    // Consume the sequence

    for (Integer ball : balls) {
        take(ball);
    }
}
List balls=new ArrayList();

对于(int i=1;我提供了一个。绝对是最简单的方法,也可能是最好的方法。我发现这也更容易,但我仍然会得到重复的数字,所以我在想,数组列表是否会在每次调用该方法时重置?这就是为什么它不会停止重复数字的原因吗?如果是这样的话,我该如何修复它?hi@RachdiO,没错。列表应该在每个序列之前被重新洗牌。上面的例子。
List<Integer> balls = new ArrayList<>();

for (int i = 1; i <= 75; ++i) {
    balls.add(i);
}

for (;;) {
    // Shuffle the list every 75 draws:

    Collections.shuffle(balls);
    System.out.println(Arrays.toString(balls.toArray()));

    // Consume the sequence

    for (Integer ball : balls) {
        take(ball);
    }
}