【问题标题】:Generate 5 sets of 6 random numbers within range 1-49, by making sure there aren’t any duplicates in each set?在 1-49 范围内生成 5 组 6 个随机数,确保每组中没有任何重复?
【发布时间】:2017-02-13 22:23:28
【问题描述】:

我正在制作一个程序,该程序将生成 5 组 6 个随机数以用于彩票,但是在打印这些数字组时它们包含重复项。我怎样才能使每组中的每个数字都是唯一的? (注意每组应按从低到高的升序排列)

import java.util.Arrays;

public class tasksTest {

    public static void main(String[] args) {


    System.out.println("Your lottery numbers are:");

    for(int i=1; i<6; i++){

        int[]lotteryNumbers = new int[6];

        for(int ii = 0; ii < lotteryNumbers.length; ii++){
            lotteryNumbers[ii] = (int)(Math.random()*49 + 1);
        }

        Arrays.sort(lotteryNumbers);
        System.out.println(Arrays.toString(lotteryNumbers));
    }
 }
}

【问题讨论】:

  • 答案就在您的问题中。使用Sets。
  • Shuffle 49 个号码并取前 6 个号码。这样可以防止您有重复的号码。

标签: java arrays random


【解决方案1】:

创建一个编号为 1-49 的 ArrayListShuffleCollections.shuffle()。以 6 个为一组进行迭代以创建 5 个独特的集合,保证没有重叠。分别对每组进行排序。完成。

【讨论】:

    【解决方案2】:

    你可以使用集合:

    Set<Integer> allNumbers = new HashSet<>();
    for (int i = 1; i < 6; i++)
    {
      Set<Integer> set = new HashSet<>();
      while (set.size() < 6)
      {
        int random = (int) (Math.random() * 49 + 1);
        if (allNumbers.add(random))
        {
          set.add(random);
        }
      }
      Integer[] array = set.toArray(new Integer[] {});
      Arrays.sort(array);
      System.out.println(Arrays.toString(array));  
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2019-04-28
      • 2010-11-26
      • 2015-06-05
      • 1970-01-01
      相关资源
      最近更新 更多