Java实现大乐透不重复数字随机号码生成方案

大乐透攻略Java实现(仅供参考学习)

购票方式

  • 每期最低购票数:7 张

  • 最低消费:14 元

  • 方案介绍:后区12个数中随机分成6组,且数字不重复。前区35个数随机分成7组,且数字不重复。前区需要7组才能够分完,所以最低购票数为7张。

  • 具体方案:后区随机分成的6组与前区分成的7组1对1随机搭配,还剩下1组前区缺少后区,新增后区:随机取一组数(后区数选取规则,排除大乐透开奖近三期的后区号码)

方案概率分析

前区号码分析

  • 最多5张彩票前区只中一个号码。由于采用的方案中均为不重复的数字,则7注大乐透中,前区都只中1个号码的情况有5注。

  • 4张彩票前区中1个号码以上。存在一种情况:一张彩票中2个号码,其余3张彩票各中一个号码。

  • 3张彩票前区中1个号码以上。存在一种情况:两张彩票中2个号码,剩下一张彩票中1个号码。

  • 2张彩票前区中1个号码以上。存在两种情况:一张彩票中1个号码,剩下一张彩票中4个号码。或者一个彩票中2个号码,剩下一张彩票中3个号码。

  • 1张彩票前区中5个号码。

后区号码分析

  • 最多3张彩票后区只中一个号码。原本6组最多只能2张彩票后区只中一个号码,但是为了与前区第7组搭配,故增加了一组后区,所以最多3张彩票后区中一个号码。
  • 1张彩票后区中2个号码。

前后区号码联合分析

注意:以下概率均为情况已发生时的概率。

  • 情况1:7张彩票中5张各中1个前区号码,后区7张彩票中2张各中1个后区号码。

构成1+1的概率则为:(5/7 ) * (2/7) = 10/49

  • 情况2:7张彩票中4张,后区7张彩票中2张各中1个后区号码。

构成1+1的概率则为:(3/7)*(2/7) = 6/49

构成2+1的概率则为:(1/7)*(2/7)= 2/49

  • 情况3:7张彩票中3张,后区7张彩票中2张各中1个后区号码。

构成1+1的概率则为:(1/7)*(2/7)= 2/49

构成2+1的概率则为:(2/7)*(2/7)= 4/49

  • 情况4:7张彩票中2张,后区7张彩票中2张各中1个后区号码。

构成1+1的概率则为:(1/7)*(2/7)= 2/49

构成2+1的概率则为:(1/7)*(2/7)= 2/49

构成3+1的概率则为:(1/7)*(2/7)= 4/49

构成4+1的概率则为:(1/7)*(2/7)= 4/49

  • 情况5:7张彩票中1张,后区7张彩票中1张中1个后区号码。

构成5+1的概率则为:(1/7)*(2/7)= 2/49

  • 情况6:7张彩票中5张各中1个前区号码,后区7张彩票中1张中2个后区号码。

构成1+2的概率则为:(5/7 ) * (1/7) = 5/49

  • 情况7:7张彩票中4张,后区7张彩票中1张中2个后区号码。

构成1+2的概率则为:(3/7)*(1/7) = 3/49

构成2+2的概率则为:(1/7)*(1/7)= 1/49

  • 情况8:7张彩票中3张,后区7张彩票中1张中2个后区号码。

构成1+2的概率则为:(1/7)*(1/7)= 1/49

构成2+2的概率则为:(2/7)*(1/7)= 1/49

  • 情况9:7张彩票中2张,后区7张彩票中1张中2个后区号码。

构成1+2的概率则为:(1/7)*(1/7)= 1/49

构成2+2的概率则为:(1/7)*(1/7)= 1/49

构成3+2的概率则为:(1/7)*(1/7)= 2/49

构成4+2的概率则为:(1/7)*(1/7)= 2/49

  • 情况10:7张彩票中1张,后区7张彩票中1张中2个后区号码。

构成5+2的概率则为:(1/7)*(1/7)= 1/49

Java方案实现的代码

import java.util.*;

public class Main {

    public static void main(String[] args) {
        dltPolicy();
    }

    /***
     * 取得范围内的随机数
     * @param min
     * @param max
     * @return
     */
    public static int getRandInteger(int min, int max) {
        int rt = 0;
        try {
            Random random = new Random();
            rt = random.nextInt(max - min + 1) + min;
            return rt;
        } catch (Exception e) {
            System.out.println("Get random error");
            return -1;
        }
    }


    /**
     * 方案代码
     */
    public static void dltPolicy() {
        //定义变量装7组大乐透彩票号码
        ArrayList<Integer> dltNumberArray = new ArrayList<>();
        //校验前区随机号码是否重复
        HashMap<Integer, Integer> frontArea = new HashMap<>();
        //校验后区随机号码是否重复
        HashMap<Integer, Integer> endArea = new HashMap<>();
        Integer front = getRandInteger(1, 35);
        frontArea.put(front, 0);
        dltNumberArray.add(front);
        Integer end = 0;
        for (int i = 0; i < 34; i++) {
            if ((i + 1) % 5 == 0 && i < 33) {
                for (int j = 0; j < 2; j++) {
                    end = getRandInteger(1, 12);
                    while (endArea.get(end) != null) {
                        end = getRandInteger(1, 12);
                    }
                    endArea.put(end, 0);
                    dltNumberArray.add(end);
                }
            }
            front = getRandInteger(1, 35);
            while (frontArea.get(front) != null) {
                front = getRandInteger(1, 35);
            }
            frontArea.put(front, 0);
            dltNumberArray.add(front);
            if (i == 33) {
                end = getRandInteger(1, 12);
                endArea.put(end + 12, 0);
                dltNumberArray.add(end);
                while (endArea.get(end + 12) != null) {
                    end = getRandInteger(1, 12);
                }
                dltNumberArray.add(end);
            }
        }
        //不重复数字验证 可以放开以下代码行注释
        //Collections.sort(dltNumberArray);
        //System.out.println(dltNumberArray);
        for (int i = 0; i < 7; i++) {
            List<Integer> nums = dltNumberArray.subList(i * 7, 7 * (i + 1));
            List<Integer> fronts = nums.subList(0, 5);
            List<Integer> ends = nums.subList(5, 7);
            System.out.println("前区:" + fronts + "后区:" + ends);
        }
    }
}

运行截图
在这里插入图片描述
测试不重复数字截图
运行结果:包含1-12的重复号码24个 + 13-35的不重复号码23个 + 随机1-12的两个不重复号码2个,共49个号码。
在这里插入图片描述

CODING一场空
关注 关注
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java实现随机重复数字的方法
09-05
为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100 的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复
基于Java大乐透选号源代码
05-25
利用Java编写的大乐透选号算法,可做参考,同理可编写出双色球的选号
Java 随机生成大乐透
qq_38220837的博客
07-06 1137
Java 随机生成大乐透
巧用Random随机生成双色球号码
orton777的博客
05-26 2197
随机JAVA
Java生成彩票号码生成若干个指定范围的不重复随机数)
秃头不用洗发水的博客
06-14 497
Java生成彩票号码生成若干个指定范围的不重复随机数)
Python实现双色球号码随机生成
we
05-19 9387
和体彩大乐透类似,福彩双色球也是购买次数最多的彩种之一,相比大乐透,双色球更容易中小奖。本文将介绍Python实习双色球彩票自由的流程,感兴趣的可以了解一下 1. 随机一注 福彩双色球一注同样包含 7 个数字,包含 6个红球和 1个篮球 其中 红球是从 1 - 33中选择 6个不同的数字 蓝球是从 1 - 16中选择 1个不同的数字 使用 Python 随机生成一注双色球号码,部分代码如下: 1 2 3 4 5 6 7 ...
随机彩票的产生
dalel的博客
09-26 96
Java实现生成n个不重复随机
08-19
主要介绍了Java实现生成n个不重复随机数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java随机抽取指定范围不重复数字
09-02
主要介绍了java随机抽取指定范围不重复数字的相关资料,需要的朋友可以参考下
JAVA 16位ID生成工具类含16位不重复随机数字+大小写
08-25
主要介绍了JAVA 16位ID生成工具类含16位不重复随机数字+大小写,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
体彩大乐透摇奖模拟(java
12-09
根据体彩大乐透的中奖规则,模拟一个随机摇奖,练习一下java swing,随机数的相关知识和一些设计思路,代码很简单 希望对学习java的初学者有所帮助
Java代码实现随机生成汉字的方法
08-26
今天小编就为大家分享一篇关于Java代码实现随机生成汉字的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
用python写一个彩票生成
最新发布
weixin_48828463的博客
12-06 196
用python写一个彩票生成器。
JAVA模拟大乐透数据(仅供参考)
~~代码中的南城故事,南城故事里的中分女王。
11-10 3652
闲着无聊写了个大乐透数据规则,不说了贴代码上去吧。   private List&lt;String&gt; hiveMeAPrize(){ List&lt;String&gt; strings = new ArrayList&lt;&gt;(); for(int x = 0; x &lt; 5000; x++){ String s =...
纯手工采用java编写双色球、大乐透随机生成算法,真实模拟出球
wjs040的博客
06-24 5055
java原生态模拟双色球、大乐透规则进行出球,原理:比如双色球,红球33.蓝球16个,先进行红球出球计算,按照双色球出球的规则随机将33个球放入数组或集合中,规定一个出球的方向,随机数12个绑定33个数,比如规定6点钟方向出球,则随机数与绑定的随机数相等时则将随机数绑定的33个数中的那个数出去,完成出球,即2次随机数相等则出球。其中也加入了开始摇球是速度是很快的,但运行一段时间后减慢速度以便出球,这和双色球真实开奖出球差不多。 本人亲测,随便猜一组号码,猜中概率最好也得好几万次,最坏的情况就得几百万次。
Java基于集合实现体彩大乐透1.0
weixin_45261249的博客
09-29 1182
编写程序实现体彩大乐透机选5注题目创建int型集合循环输出前区循环输出后区完整代码运行结果 题目 编写程序实现体彩大乐透机选五注,把机选结果打印在控制台上,具体规则如下 大乐透由前区和后区构成 前区:从1-35中随机选出不重复的5个数 后区:从1-12中随机选出不重复的2个数 创建int型集合 //限定集合类型,基本数据类型为包装类 LinkedList<Integer> list=new LinkedList<Integer>(); 循环输出前区 //循环前区 int[] r
Java 超级大乐透
GHHCNGC的博客
07-17 2821
package com.neusoft.data20180716; import java.util.Random; /**  * 大乐透  * 红球1-35 生成5个不重复  * 篮球1-12 生成2个不重复  * 红蓝可以重复  * @author 郭浩  *  */ public class Shuangseqiu {     public static void main(String...
Java 高性能生成6位不重复随机数字
05-30
可以使用Java的Random类来生成随机数字,并且使用Set集合来存储已经生成数字,以保证不重复。以下是一个可能的实现: ```java import java.util.Random; import java.util.Set; import java.util.HashSet; public class RandomGenerator { private static final int MAX_NUM = 999999; // 最大的6位数字 private static final int MIN_NUM = 100000; // 最小的6位数字 public static int generate() { Random random = new Random(); Set<Integer> set = new HashSet<>(); while (set.size() < MAX_NUM - MIN_NUM + 1) { int num = random.nextInt(MAX_NUM - MIN_NUM + 1) + MIN_NUM; set.add(num); } int index = random.nextInt(MAX_NUM - MIN_NUM + 1); int result = 0; for (int num : set) { if (index-- == 0) { result = num; break; } } return result; } } ``` 在这个实现中,我们首先定义了最大和最小的6位数字,然后使用Random类生成随机数字并将其存储在Set集合中。由于Set集合的特点是不允许重复元素,所以当Set集合中的元素数量达到最大值时,我们就可以保证其中的所有数字都是不重复的。 最后,我们再使用Random类生成一个随机索引,从Set集合中取出对应的数字作为结果返回。由于Set集合是无序的,所以我们需要遍历集合来找到对应索引的数字

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 解决开机时出现An operating system wasn‘t found问题 30761
  • OAuth2.0四种授权模式以及Oauth2.0实战 18688
  • 分布式数据库架构 9765
  • OAuth2.0四种授权模式及实战 9524
  • 一文读懂Zookeeper 7264

分类专栏

  • 数据交易 2篇
  • 数据要素 2篇
  • stablediffusion 1篇
  • 玩转jeecgboot 2篇
  • mysql 4篇
  • elasticsearch 3篇
  • 算法 2篇
  • docker 2篇
  • 数据结构 5篇
  • Vue 3篇
  • Java入门基础学习笔记 20篇

最新评论

  • OAuth2.0四种授权模式及实战

    CODING一场空: https://gitee.com/torlesse-liang/torlesse-oauth2

  • OAuth2.0四种授权模式及实战

    青铜程序员阿升: 完整代码跟表能发我QQ吗?794395301@qq.com,谢谢

  • OAuth2.0四种授权模式以及Oauth2.0实战

    樱眸随风酒葬花: 这个1.1.3我看的真是有点懵,为什么要把token回传呢?token存放在后端不行吗,存个redis,你只要回传了不就会暴漏token吗,有访问受保护资源的情况时,发送请求到配套的后台,然后由后台去访问受保护资源不是更好吗?

  • OAuth2.0四种授权模式以及Oauth2.0实战

    CODING一场空: 统一回复一下:已更新最新代码上仓库。之前的一直报错授权码不正确原因是,他去内存找授权码了,并没有去数据库里面找授权码。具体问题排查过程更新到文章最下面。

  • OAuth2.0四种授权模式以及Oauth2.0实战

    CODING一场空: 统一回复一下:已更新最新代码上仓库。之前的一直报错授权码不正确原因是,他去内存找授权码了,并没有去数据库里面找授权码。具体更新到文章最下面。

大家在看

  • PowerInfer:使用消费级 GPU 提供快速大语言模型
  • ADriver-I: 自动驾驶的一个通用世界模型
  • 蓝易云 - 对于网站建设来说,国内服务器和香港服务器哪个更优? 364
  • this关键字 66

最新文章

  • 构建区域/全域“数据银行”,充分发挥数据价值
  • 构建数据“积木工厂”,共创数据交易新未来
  • StableDiffusion安装 【人工智能】
2024年2篇
2023年61篇
2022年13篇
2021年3篇
2020年17篇
2019年13篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CODING一场空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

哆哆女性网余姓起名女人浠字起名寓意好不开古老的鬼故事用诗起名字吗侵犯公民名誉权怎么起诉秀字起名起名大全排八字姓氏朱起名字网站制作模板代码给小度小度起名网站设计交互模式重庆seo系统周公解梦 梦见马python网站设计安妮宝贝经典语录属鸡缺水女孩起名网上免费起名字大全电子商务网站设计周公解梦右眼跳蔬菜起名公司怎么外贸seo王飞飞艺术签名杨的起名广州优秀网站设计虞城人口茅山后裔有声小说合肥企业网站设计姓叶女孩起名网站搜索引擎优化平台设计网站装修淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化