java实现双色球抽奖算法

本文实例为大家分享了java实现双色球抽奖的具体代码,供大家参考,具体内容如下

实现双色球先考虑整体思路:

1.随机生成7位数的数组为大奖号码(前6位红球每个数值取值范围为1~33,而且6个数值不能相同,第七位篮球取值范围为1~16)
2.判断购买号码为手动输入还是机选(如为手动输入,将用for循环一次从控制台输入一个依次数赋值到数组;如为机选,实现代码和 1. 中相同)
3.将大奖号码和购买号码的前6位红球分别实现升序排列
4.判断大奖号码和购买号码的号码匹配程度来确定得奖级别或者没有得奖,并将结果输出到控制台

实现代码具体如下:

//导包
import java.util.*;
class TestDouble01
{
  public static void main(String[] args)
  {
    Scanner s = new Scanner(System.in);
    Random ran = new Random();
    //随机生成大奖号码
    int arr2[]=new int[7];
    int shu =33;
    for (int i=0;i<arr2.length ;i++ )
    {
      boolean flag2=true;
      while (flag2)
      {
        if(i==6){
          shu = 16;
        }
        int b = ran.nextInt(shu)+1;
        int num2=0;
        for (int j=0;j<arr2.length ;j++ )
        {
          if (b==arr2[j])
          {
            num2++;
          }
        }
        if (num2==0)
        {
          arr2[i]=b;
          flag2=false;
        }
      }
    }
    //判断购买号码的生成方式
    boolean flag=true;

    int arr1[]=new int[7];
    while(flag){
      System.out.println("请选择机选还是手选:1、机选;2、手选;3、退出 (请输入对应序号)");
      int xz=s.nextInt();
      if (xz == 1)
      {
        int shu1 = 33;
        //随机生成购买号码
        for (int i=0;i<arr1.length ;i++ )
        {
          boolean flag1=true;
          while (flag1)
          {
            if (i==6)
            {
              shu1=16;
            }
            int a = ran.nextInt(shu1)+1;
            int num1=0;
            for (int j=0;j<arr1.length ;j++ )
            {
              if (a==arr1[j])
              {
                num1++;
              }
            }
            if (num1==0)
            {
              arr1[i]=a;
              flag1=false;
            }
          }
        }
        flag=false;
      }else if (xz==2)
      {
        //手动输入
        for (int i=0;i<arr1.length ;i++ )
        {
          System.out.println("请输入第"+(i+1)+"个数:");
          arr1[i]=s.nextInt();
        }
        s.close();
      }else if (xz==3)
      {
        //退出
        flag=false;
      }else{
        System.out.println("请输入正确的序号");
      }
    }
    //将随机的大奖数组前6位红球升序排列
    for(int j=0;j<=arr1.length-2;j++){
      for (int i = 0;i<arr1.length-2-j;i++ )
      {
        if (arr1[i]>arr1[i+1])
        {
          arr1[i]=arr1[i]+arr1[i+1];
          arr1[i+1]=arr1[i]-arr1[i+1];
          arr1[i]=arr1[i]-arr1[i+1];
        }
      }
    }
    //将随机的购买数组前6位红球升序排列
    for(int j=0;j<=arr2.length-2;j++){
      for (int i = 0;i<arr2.length-2-j;i++ )
      {
        if (arr2[i]>arr2[i+1])
        {
          arr2[i]=arr2[i]+arr2[i+1];
          arr2[i+1]=arr2[i]-arr2[i+1];
          arr2[i]=arr2[i]-arr2[i+1];
        }
      }
    }

    //输出打印大奖号码和购买号码
    System.out.println("购买号码为:"+Arrays.toString(arr1));
    System.out.println("大奖号码为:"+Arrays.toString(arr2));

    //判断奖项
    //查询两个数组中前6位数字相同的数量
    int num = 0;
    for (int i=0;i<arr1.length-1 ;i++ )
    {
      for (int j=0;j<arr2.length-1 ;j++ )
      {
        if (arr2[i]==arr1[j])
        {
          num++;
        }
      }
    }
    //由相同的数字数量判断奖项
    System.out.println(num);
    System.out.println(arr1[6]==arr2[6]);
    if (arr1[6]==arr2[6])
    {
      if (num==6){
        System.out.println("恭喜您获得一等奖");
      }else if (num==5){
        System.out.println("恭喜您获得三等奖");
      }else if (num==4){
        System.out.println("恭喜您获得四等奖");
      }else if (num==3){
        System.out.println("恭喜您获得五等奖");
      }else if (num==2 || num==1 || num==0){
        System.out.println("恭喜您获得六等奖");
      }else{
        System.out.println("您未获奖,再接再厉");
      }
    }else{
      if (num==6){
        System.out.println("恭喜您获得二等奖");
      }else if (num==5){
        System.out.println("恭喜您获得四等奖");
      }else if (num==4){
        System.out.println("恭喜您获得五等奖");
      }else{
        System.out.println("您未获奖,再接再厉");
      }
    }
  }
}

代码运行结果如下:

由于获奖为概率问题,所以想获得到结果为大奖的几率很低,大多数为:“未获奖 ”属于正常现象。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java算法实现预测双色球中奖号码

    双色球选号规则红球是1~33选6个,蓝球1~16选1个. 它有17721088种排列组合, 这个代码实现了如何将一组双色球号码 转换成第n个排列组合数字, 以及如何根据第n个排列组合数字生成一组双色球号码. 分析一下今年的中奖号码所隐含的排列组合序号,也许你会找到规律, 哈哈,或许你能用它算出下一次的中奖号码,赶快试试吧! DoubleColorBall.java import java.util.Arrays; public class DoubleColorBall { /** * 根据双色

  • java双色球机选法程序解析

    本文实例为大家分享了java双色球机选法程序的具体代码,供大家参考,具体内容如下 一.程序要求 随机产生红色球池1~33,并随机从红色球池中去除6个红球,且不可重复! 随机产生蓝色球池1~16, 并随机从蓝色球池中去除1个蓝球,且不可重复! 二.程序分析 a.先将红球与蓝球球池建立! 我们可以使用for循环来产生,并放到对应数组中. int[]hongQiu=new int[33]; for(int i=0;i<hongQiu.length;i++){ hongQiu[i]=i+1; b.通过R

  • Java实现双色球抽奖随机算法示例

    第一次写技术博客,写一下以前写的一个双色球抽奖随机算法. 原理如下: 1首先初始化一个待抽奖的数组nums,数组的长度k 2. 随机一个1-k之间的随机数,得到nums[k],这样得到第一个抽奖号,nums中剔除该号码,k--. 3. 重复步骤2,直到得到全部中奖号码 class myLuck { private int mTarget; List<Integer> mNums = new ArrayList<Integer>(); //摇奖池 ///从多少个数中产生多少个数 //

  • java实现双色球机选号码生成器

    本文实例为大家分享了java实现双色球机选号码生成器的具体代码,供大家参考,具体内容如下 双色球号码1~32不重复选6个(排序好),1~16中选一个(蓝号) import java.util.Random; import java.util.Arrays; //操作数组的工具类 /** * 双色球号码机选 * * @author Administrator * */ public class Lettery { public static void main(String[] args) { f

  • Java实现爬取往期所有双色球开奖结果功能示例

    本文实例讲述了Java实现爬取往期所有双色球开奖结果功能.分享给大家供大家参考,具体如下: 梦想还是要有的,万一实现了呢?我相信经常买双色球的朋友和我都会有一个疑问,就是往期双色球的开奖结果是什么?我钟意的这一注双色球在往期是否开过一等奖,如果开过的话,基本上可以放弃这一注了,因为历史上应该没有出现过两期双色球开奖完全一致的吧?那么往期的开奖结果是什么呢?我自己用Java写了一个简易的类,爬取所有双色球开奖结果,本来想开发安卓版本的,由于UI等需要时间准备,有缘再开发吧. import java

  • 使用java技术抓取网站上彩票双色球信息详解

    前言 现在很多web应用,做过web项目的童鞋都知道,web结果由html+js+css组成,html结构都有一定的规范,数据动态交互可以通过js实现. 有些时候,需要抓取某一个你感兴趣的网站信息,一个网站信息肯定是通过某一个url,发送http请求,根据地址定位的,当知道这个地址,可以获取到很多的网络响应,需要认真分析,找到你那一个合适的地址,最后通过这个地址返回一个html给你,我们可以得到这个html,分析结构,解析这个结构获取你要的数据.Html的结构解析往往是复杂繁琐的,我们可以使用j

  • Java实现简单双色球摇奖功能过程解析

    这篇文章主要介绍了Java实现简单双色球摇奖功能过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 双色球:从1-33号球中选取6个红球,且红球不重复 从1-16号球中选取一个篮球 话不多说 上代码~~~ package Javaee; import java.util.Arrays; import java.util.Random; public class DoubleChromosphere { public static void

  • java实现双色球抽奖算法

    本文实例为大家分享了java实现双色球抽奖的具体代码,供大家参考,具体内容如下 实现双色球先考虑整体思路: 1.随机生成7位数的数组为大奖号码(前6位红球每个数值取值范围为1~33,而且6个数值不能相同,第七位篮球取值范围为1~16) 2.判断购买号码为手动输入还是机选(如为手动输入,将用for循环一次从控制台输入一个依次数赋值到数组:如为机选,实现代码和 1. 中相同) 3.将大奖号码和购买号码的前6位红球分别实现升序排列 4.判断大奖号码和购买号码的号码匹配程度来确定得奖级别或者没有得奖,并

  • Java实现游戏抽奖算法

    常用抽奖算法对比 基础的游戏抽奖算法通常要求实现在指定奖品的集合中,每个奖品根据对对应概率进行抽取.个人了解的主要有以下几中抽奖算法: 随机数一一对应 算法思想 这种算法思想最为简单.将n个奖品编号0 - N-1,其中各类奖品的概率通过其数量体现,最后程序产生0~n-1之间的随机数便是抽中的奖品编号.例如: 苹果手机概率1%,网站会员20%,折扣券20%,很遗憾59%.这样,编号0是苹果手机,1-20是会员,21-40是折扣券,41~100是 很遗憾.产生的随机数落在那个区间,就代表那个奖品被抽

  • Java抽奖算法第二例

    本文实例为大家分享了java抽奖算法,供大家参考,具体内容如下 1. 算法分析  根据概率将奖品划分区间,每个区间代表一个奖品,然后抽取随机数,反查落在那个区间上,即为所抽取的奖品. 2. 代码 核心算法 public class Arithmetic { // 放大倍数 private static final int mulriple = 1000000; public int pay(List<Prize> prizes) { int lastScope = 0; // 洗牌,打乱奖品次

  • Java实现抽奖算法的示例代码

    目录 一.题目描述 二.解题思路 三.代码详解 四.优化抽奖算法 解题思路 代码详解 一.题目描述 题目: 小虚竹为了给粉丝送福利,决定在参与学习打卡活动的粉丝中抽一位幸运粉丝,送份小礼物.为了公平,要保证抽奖过程是随机的. 二.解题思路 1.把参与的人员加到集合中 2.使用Random对象获取随机数 3.把随机数当下标,获取集合中的幸运用户 三.代码详解 public class Basics28 { public static void main(String[] args) { List<

  • Java实现权重随机算法详解

    目录 应用场景 本文目标 算法详解 权重比例 Java 实现 参考 应用场景 客户端负载均衡,例如 Nacos 提供的客户端负载均衡就是使用了该算法 游戏抽奖(普通道具的权重很高,稀有道具的权重很低) 本文目标 Java 实现权重随机算法 算法详解 比如我们现在有三台 Server,权重分别为1,3,2.现在想对三台 Server 做负载均衡 Server1 Server2 Server3 weight weight weight 1 3 2 权重比例 我们算出每台 Server 的权重比例,权

  • java实现幸运抽奖功能

    本文实例为大家分享了java实现幸运抽奖功能的具体代码,供大家参考,具体内容如下 本系统较为简单,未使用是什么多的算法,也未添加保存文件读取文件功能, 1.任务 模拟注册登录幸运抽奖全过程 2.主要功能: 1.注册2.登录3.退出登录4.抽奖5.退出系统 首页: 1.输出菜单2.选择菜单编号3.如果编号选择错误,输出“您的输入有误!” 注册: 1.输入用户名和密码,系统产生4位随机数作为卡号.2.注册成功,输出用户信息 登录: 1.输入注册时的用户名和密码,登录成功,系统提示登陆成功.2.如果用

  • java 中平方根(sqrt)算法 的实例详解

    java 中平方根(sqrt)算法 平方根(sqrt, square root)是数学中常见的数学的公式; 使用程序进行求平方根主要分为两步: 第一步: while()循环, 控制循环次数及小数的位数, 防止无限循环和出现多位小数; 第二步: 通过分解平方根, 使用循环, 逐渐减小,接近平方根; 同理, 其他方根也可以类似扩展, 不过需要注意的是, 偶数次方根需要确保输入正数; 奇数次方根需要转换为正数, 确保循环收敛, 再进行结果正负判断; 代码如下: /* * Algorithms.java

  • 基于Java实现的Dijkstra算法示例

    本文以实例形式介绍了基于Java实现的Dijkstra算法,相信对于读者研究学习数据结构域算法有一定的帮助. Dijkstra提出按各顶点与源点v间的路径长度的递增次序,生成到各顶点的最短路径的算法.即先求出长度最短的一条最短路径,再参照它求出长度次短的一条最短路径,依次类推,直到从源点v 到其它各顶点的最短路径全部求出为止. 其代码实现如下所示: package com.algorithm.impl; public class Dijkstra { private static int M =

  • java实现选择排序算法

    java实现选择排序算法 public static void selectSort(int[] array) { for (int i = 0; i < array.length - 1; i++) { int min = i; for (int j = i + 1; j < array.length; j++) { if (array[j] < array[min]) { min = j; } } Sort.swap(array, i, min);//交换i和min } } 选择排序

随机推荐