我有一个包含数字的数组列表
例如
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(54);
numbers.add(11);
numbers.add(6);
numbers.add(8);
numbers.add(32);
我想选择使用随机类在数组列表中找不到的新数字
我的尝试
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(54);
numbers.add(11);
numbers.add(6);
numbers.add(8);
numbers.add(32);
randomQuestion = new Random().nextInt(numbers.size());
for (int i : numbers) {
if (i == randomQuestion) {
randomQuestion = new Random().nextInt(numbers.size());
}else{
numbers.add(randomQuestion);
}
}
我发现了很多话题,但没有与我合作
答案 0 :(得分:2)
首先声明一个变量,该变量是要产生的最大整数(我使用100),然后在循环中产生随机数,直到列表中不存在1:
int max = 100;
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(54);
numbers.add(11);
numbers.add(6);
numbers.add(8);
numbers.add(32);
int randomQuestion = 0;
boolean exists = false;
do {
randomQuestion = new Random().nextInt(max) + 1;
exists = numbers.contains(randomQuestion);
} while(exists);
numbers.add(randomQuestion);
System.out.println(randomQuestion);
请注意,随着列表的增加,循环可能需要更长的时间才能完成,并且如果列表中充满了1至100的所有数字,则循环不会停止。
因此,您必须检查是否已生成所有数字,或者列表的大小是否小于100,如果是,则要求输入新的随机数。
答案 1 :(得分:1)
或者,您可以预先生成一个从1到100的所有数字的列表,然后对列表进行随机排序。从功能上来说,这会为您提供一个新的随机数,您在每次浏览列表时都不会看到它,而且应该很快。
List<Integer> numbers = new ArrayList<>(100);
for (int i = 1; i <= 100; ++i) {
numbers.add(i);
}
Collections.shuffle(numbers);