首页 > 解决方案 > 如何使用随机类在数组列表中找不到选择号?

问题描述

我有包含数字的数组列表

例如

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);
            }
        }

我找到了很多主题,但没有与我合作

标签: javaandroidarraylist

解决方案


首先声明一个变量,它是要生成的最大整数(我使用 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,如果是,则要求一个新的随机数。


推荐阅读