发新话题
移动帖子 加入精华 加入置顶 加入收藏 关注此帖

随机生成5组彩票数字,每组6个数字,要求组也不能重复





随机生成5组彩票数字,每组6个数字,要求组也不能重复

1 问题:
以时间做随机种子,让6个随机数在1-32之间,并且6个数字不会出现重复,而且不为0,连续生成5组这样的数

2 解决的思路
充分利用Set不允许重复的特性
如果数字先后顺序不重要,可以用HashSet
如果需要数字排序,可以用TreeSet
如果数字顺序很重要,可以用 LinkedHashSet

3 代码
 
package test;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
public class TestRandom {
  static Random ran;;
  public static Set<Integer> getRandom() {
    Set<Integer> set = new TreeSet<Integer>();
    while (set.size() < 6) {
      set.add(ran.nextInt(31) + 1);
    }
    return set;
  }
  public static void main(String[] args) {
    Set<Set<Integer>> sets = new HashSet<Set<Integer>>();
    ran = new Random(System.currentTimeMillis());
    NEXT: while (sets.size() < 5) {
      Set<Integer> set = getRandom();
      for (Set<Integer> ss : sets) {
        if (ss.containsAll(set)) { // 如果重复,则不记录
          continue NEXT;
        }
      }
      sets.add(set);
      for (Integer id : set) {
        System.out.print(id + ",");
      }
      System.out.println();
    }
  }
}
4 运行结果
4,5,13,19,21,24,
6,7,12,15,16,29,
5,6,10,15,19,31,
2,4,11,12,17,27,
1,11,13,15,30,31,
快乐渡过每一天,减肥坚持每一天



编辑 回复 快速回复 TOP


Re:随机生成5组彩票数字,每组6个数字,要求组也不能重复

学习 更加深刻学习了SET 的特性 以前没特别注意!
java技术空间:hi.baidu.com/xhz12345 
编辑 回复 快速回复 TOP

Re:随机生成5组彩票数字,每组6个数字,要求组也不能重复

有点难度哦。 我想到用treeset了 但是不知道如何解决输出6个数字的问题,。。。。。。感谢楼主
编辑 回复 快速回复 TOP

Re:随机生成5组彩票数字,每组6个数字,要求组也不能重复

LS..可以使用迭代器哦
编辑 回复 快速回复 TOP

Re:随机生成5组彩票数字,每组6个数字,要求组也不能重复

学习了
----------------------http://michelecindy.javaeye.com
编辑 回复 快速回复 TOP
发新话题