使用 java 中的数组生成 4 个不重复的随机数

Generation of 4 non repeating random numbers using arrays in java

我有这个数组

int [] marc = new int[4];

我需要插入一组1-10范围内的不重复的随机数给它

我正在使用这个 for 循环来设置随机数

for (he = 0; he < 4; he++) {
    marc[he] = rn.nextInt(10 - 1 + 1) + 1;
    marc[he]++; 
}

它给了我随机数,但在数组中重复了一些

我也在用

java.util.Random;

使用 java.util.Random; 会在您的范围较小时更频繁地生成重复数字,在您的情况下仅为 10。您的代码中没有条件检查生成的随机数是否已存在于您的数组中与否。

在将生成的数字插入数组之前,您首先需要检查该数字是否已存在于您的数组中。如果没有,则将该数字插入数组,否则生成下一个随机数。

嗯,是的,数字可以随机重复。您需要执行自己的逻辑来验证它们是否已经在数组中,这可以使用以下代码完成:

在代码中,我使用了一个包含 10 个元素的数组来观察即使在那种情况下也没有重复的数字。

import java.util.Random;

public class RandomNumbersNoRepeating {
    public static void main(String[] args) {
        int array[] = new int[10];
        Random random = new Random();

        //Fills the array
        for (int i = 0; i < array.length; i++) {
            boolean found = false;
            int r = 0;
            do {
                found = false;
                r = random.nextInt(10) + 1;
                //Here we check if the number is not on the array yet
                for (int j = 0; j < array.length; j++) {
                    if (array[j] == r) {
                        found = true;
                        break;
                    }
                }
            } while (found);

            array[i] = r;
        }

        //Prints the array
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

另一种可能的解决方案,如评论中给出的那样,可以将数组从 1-10 打乱顺序,并获得前四个数字