为每个数组值生成唯一的随机数

N.C*_*Cre 5 java random

我有这个方法为这个方法中列出的每个数组值生成一个数字(1-10).我希望将整组数字显示为一组唯一数字.这该怎么做?

public static int generateNumbers(int[] lotteryNumbers) {

    Random randNum = new Random();

    lotteryNumbers[0] = randNum.nextInt(10);
    lotteryNumbers[1] = randNum.nextInt(10);
    lotteryNumbers[2] = randNum.nextInt(10);
    lotteryNumbers[3] = randNum.nextInt(10);
    lotteryNumbers[4] = randNum.nextInt(10);

    return lotteryNumbers[4];
}
Run Code Online (Sandbox Code Playgroud)

Tun*_*aki 5

一个简单的解决方案是生成一个10位数的列表,随机播放该列表并获得前五个元素:

List<Integer> list = new ArrayList<>(10);
for (int i = 0; i < 10; i++) {
    list.add(i);
}
Collections.shuffle(list);
Integer[] lotteryNumbers = list.subList(0, 5).toArray(new Integer[10]);
Run Code Online (Sandbox Code Playgroud)

Collections.shuffle(list) 是一种实用方法,可以随机置换给定列表.

如果您使用的是Java 8,则可以将其写为:

List<Integer> list = IntStream.range(0, 10).boxed().collect(Collectors.toList());
Collections.shuffle(list);
int[] loterryNumbers = list.subList(0, 5).stream().mapToInt(i -> i).toArray();
Run Code Online (Sandbox Code Playgroud)