十行代码写个彩票随机生成器(双色球+大乐透)

前言

自己动手丰衣足食,平时买彩票总是不中,回想起来是不是他那个机器机选的就是不中的号???
那就自己code一个试试吧!
偷偷告诉你,我写完 就去买了,结果真就中了!
CSDN下载链接:免费的免费的免费的

思路

规则

双色球(红球33选6,蓝球16选1)
大乐透(红球35选5,蓝球12选2)

生成随机数

  1. 生成的数要不重复且在规则范围内
  2. for循环+do while+boolean去重
    (当然这样的效率很低,可是暂且够用就行了,如果想知道优化版怎么做的话,请移步此博客:)

代码

客户端代码

public class DoubleChomper {
    
    
    //双色球红球范围(所有期望值+1)
   public static int redRange = 34;
    //双色球红球个数
    public static int redFrequency = 6;
    //双色球蓝球范围
    public static int blueRange = 17;
    //双色球蓝球个数
    public static int blueFrequency = 1;
    //大乐透红球范围
    public static int leTouRedRange =36;
    //大乐透红球个数
    public static int leTouRedFrequency = 5;
    //大乐透蓝球范围
    public static int leTouBlueRange = 13;
    //大乐透蓝球范围
    public static int leTouBlueFrequency = 2;

    public static void main(String[] args) {
    
    
        getResult(10,10);
    }

核心代码

	/**
     * 彩票选球
     * @param range 选球范围
     * @param number 选球个数
     * @return
     */
    private static List getTheBall(int range, int number){
    
    
        //定义接收数组
        List red_list =new ArrayList(6);
        Random rand = new Random();
        boolean[] bool = new boolean[range];
        int randInt = 0;
        //循环生成随机数去重后添加到接收数组中
        for(int i = 0; i < number ; i++) {
    
    
            do {
    
    
                randInt = rand.nextInt(range-1)+1;
            } while (bool[randInt]);
            bool[randInt] = true;
            red_list.add(randInt);
        }
        //结果集排序
        red_list.sort(Comparator.naturalOrder());
        return red_list;
    }

打印

	/**
     * 循环打印结果
     * @param doubleColorNum 双色球生成号码注数
     * @param leTouNum 大乐透生成号码注数
     */
    public static void getResult(int doubleColorNum , int leTouNum ){
    
    
        System.out.println("双色球机选结果");
        for (int i = 0; i <doubleColorNum ; i++) {
    
    
            List red = getTheBall(redRange,redFrequency);
            List blue = getTheBall(blueRange,blueFrequency);
            System.out.println("红球: "+red+";蓝球:  "+blue);
        }
        System.out.println("大乐透机选结果");
        for (int i = 0; i <leTouNum ; i++) {
    
    
            List red = getTheBall(leTouRedRange,leTouRedFrequency);
            List blue = getTheBall(leTouBlueRange,leTouBlueFrequency);
            System.out.println("红球:"+red+";   蓝球:" + blue);
        }
    }

gitee下载链接

源码文件下载

知识点回顾

其实也没什么知识点,就是生成范围随机数+去重就OK了

记得中奖了回来给个好评哈!

番外

去重的其他方法
Java8 Stream链式表达式:去重+排序
记一次线上问题集合到底怎么去重

猜你喜欢

转载自blog.csdn.net/l_mloveforever/article/details/112439278