Java如何在一个范围内选择无重复的随机数

时间:2017-04-03 19:39:39

标签: java arrays random

我想随机地在数组中设置可见(false)元素。但是在写这段代码时

int random = (int) (Math.random() * 24 + 1);

myLabel.get(random).setVisible(false);

有时标签不是不可见的。因为随机给出相同的数字。我不是指如何生成数字而不重复。因为即使数字不重复,随机也可以选择相同的数字两次或更多。例如;

假设我生成1到5个整数,没有像{2,4,5,1,3}这样的重复。当我尝试随机选择时,程序可以选择4次,也许它从不选择3次5种选择。

我希望我能正确地写清楚。

1 个答案:

答案 0 :(得分:0)

可以使用列表而不是使用数组。根据列表的大小生成随机数。并在使用时将其删除。这是一个简单的测试用例,显示了我的意思。

    List<Integer> myList = new ArrayList<>(Arrays.asList(new Integer[]{1, 2, 3, 4, 5}));
    for (int x = 0; x < 5; ++x) {
        int random = (int) (Math.random() * myList.size());
        Integer myInt = myList.remove(random);
        System.out.println(myInt);
    }