【问题标题】:How select random numbers within a range without duplication [duplicate]如何在不重复的范围内选择随机数[重复]
【发布时间】:2017-04-03 19:39:38
【问题描述】:

我想随机设置数组中的 setVisible(false) 元素。但是当写这段代码时

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

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

有时标签总是可见的。因为随机给出相同的数字。我并不是说如何生成没有重复的数字。因为即使数字不重复,随机可能会选择两次或更多相同的数字。例如;

假设我生成 1 到 5 个没有重复的整数,如 {2,4,5,1,3}。当我尝试随机选择时,程序可能会选择 4 两次,并且可能永远不会为 5 次选择 3。

希望我能写得清楚明白。

【问题讨论】:

  • 我不清楚你的意思。当你有一个包含从 1 到 5 的随机数字的列表时,你所需要的就是一个接一个地取。为什么要从这个列表中随机选择一个数字的额外步骤?
  • 我现在明白了。感谢您的帮助:)
  • 一方面,我同意这是重复的,我可以对它进行欺骗,但是......链接问题的答案(并且有 许多他们)有点......嗯......我宁愿在关闭之前在那里回答......

标签: java arrays random


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-13
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多