【问题标题】:Generating unique random number in java [duplicate]在java中生成唯一的随机数[重复]
【发布时间】:2015-09-20 15:07:39
【问题描述】:

我想生成从 1 到 9 的随机数,并且我希望它们是唯一的。这是我编写的代码,它为我提供了从 1 到 9 的 9 个不同数字,但我不知道如何生成唯一数字。

 int data[] = new int[10];
      for(int i = 0; i < data.length; i++) {
            Random randomGenerator = new Random();

            data[i] = randomGenerator.nextInt(10);
          System.out.println(data[i]);

        }

【问题讨论】:

  • 查看右侧的“相关”列表。你怎么解释?
  • 看看我的问题:stackoverflow.com/questions/32233896/… 这可能有用
  • 我建议使用不同的解决方案:1)在数组中存储 1 到 9 个数字 2)使用 Math.random(10) 从数组中获取这 10 个数字之一。

标签: java arrays random


【解决方案1】:

用 1..9 填充 List&lt;Integer&gt; list,然后:

Collections.shuffle(list);

请注意,要填充 10 个数组,您必须有一个副本。

【讨论】:

    【解决方案2】:
    1. 在一个数组中存储 1 到 9 个数字。

    2. 生成1到9之间的随机数作为位置,返回array[position-1]取值

    3. 在数组中使用数字后,将值标记为 -1。

    4. 如果数组中的值为-1,则再次获取随机数

    【讨论】:

    • 你如何保证避免两次获得相同的号码?这与生成 1..9 (0..8) 范围内的随机数有何不同?
    • 每当您获得一个数字时,使用它并将该位置的值设为-1。如果数组元素的值为-1,则循环再次绘制随机数
    猜你喜欢
    • 1970-01-01
    • 2016-05-24
    • 2011-12-28
    • 2012-03-14
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多