双色球大乐透随机实现

双色球大乐透随机实现

每次抱着一夜暴富的梦想去买彩票,懒得自己选号,又不放心彩票店机选机制,那不如自己随机,中不了也没法抱怨,兄弟们,等我中奖的好消息吧

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Random;

public class ChasingDreams {

    public static void main(String[] args) {

        // 双色球组合
        // 前区6位1-33 后区1位1-16
        // 参数列表:前区起始值、前区结束值、后区起始值、后区结束值、前后区分界位数、总执行次数
        showBallArray(1, 33, 1, 16, 6, 5);

        // 大乐透组合
        // 前区5位1-35 后区2位1-12
        // 参数列表:前区起始值、前区结束值、后区起始值、后区结束值、前后区分界位数、总执行次数
        showBallArray(1, 35, 1, 12, 5, 5);
    }

    // 公共传值
    public static void showBallArray(int frontStart, int fronEnd, int backStart, int backEnd, int middle, int counts) {
        ArrayList doubleColorBallCollection = new ArrayList();
        // 执行随机获取
        for (int i = 0; i < counts; i++) {
            doubleColorBallCollection.add(retrunBallArray(frontStart, fronEnd, backStart, backEnd, middle));
        }

        // 循环遍历输出
        doubleColorBallCollection.forEach(doubleColorBall -> {
            // 拼接出前区后区
            System.out.println(((ArrayList) doubleColorBall).subList(0, middle) + " --- " + ((ArrayList) doubleColorBall).subList(middle, 7));
        });
    }

    // 公共返回
    public static ArrayList retrunBallArray(int frontStart, int fronEnd, int backStart, int backEnd, int middle) {
        // 最终返回
        ArrayList returnBall = new ArrayList();
        // 公共前区
        ArrayList fronReturnBall = new ArrayList();
        // 公共后区
        ArrayList backReturnBall = new ArrayList();
        // 随机数
        Random random = new Random();
        // 前区随机数
        int fronRandomNum = 0;
        // 后区随机数
        int backRandomNum = 0;
        // 前区后区总数恒为7位
        for (int i = 0; i < 7; i++) {
            // 小于前后区分界位数,随机前区球
            if (i < middle) {
                // 获取前区随机数
                fronRandomNum = random.nextInt(fronEnd - frontStart + 1) + frontStart;
                // 若已存在前区,则重新随机
                if (fronReturnBall.contains(fronRandomNum)) {
                    i--;
                } else {
                    // 加入不重复球
                    fronReturnBall.add(fronRandomNum);
                }
            } else { // 大于前后区分界位数,随机后区球
                // 获取后区随机数
                backRandomNum = random.nextInt(backEnd - backStart + 1) + backStart;
                // 若已存在后区,则重新随机
                if (backReturnBall.contains(backRandomNum)) {
                    i--;
                } else {
                    // 加入不重复球
                    backReturnBall.add(backRandomNum);
                }
            }
        }
        // 前区排序
        fronReturnBall.sort(Comparator.naturalOrder());
        // 将前区加入最终返回数组
        returnBall.addAll(fronReturnBall);
        // 后区排序
        backReturnBall.sort(Comparator.naturalOrder());
        // 将后区加入最终返回数组
        returnBall.addAll(backReturnBall);
        return returnBall;
    }
}

结果输出:
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值