我有这个方法为这个方法中列出的每个数组值生成一个数字(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)
一个简单的解决方案是生成一个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)
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |