java实现双色球抽奖算法

作者:PowerAlan 时间:2023-11-28 23:51:51 

本文实例为大家分享了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("您未获奖,再接再厉");
     }
   }
 }
}

代码运行结果如下:

java实现双色球抽奖算法

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

来源:https://blog.csdn.net/PowerAlan/article/details/78820479

标签:java,双色球,抽奖
0
投稿

猜你喜欢

  • C# Directory.GetFiles()函数案例详解

    2022-12-10 04:51:02
  • Java中Socket用法详解

    2021-07-27 07:14:07
  • Entity Framework模型优先与实体对象查询

    2022-11-18 07:19:36
  • Android底部菜单简单应用

    2022-03-25 18:09:58
  • Android Studio 超级简单的打包生成apk的方法

    2023-08-07 18:57:28
  • MyBatis-Plus 集成动态多数据源的实现示例

    2023-06-26 17:56:35
  • java8 利用reduce实现将列表中的多个元素的属性求和并返回操作

    2021-09-29 06:53:38
  • SpringBoot的API文档生成工具SpringDoc使用详解

    2021-11-09 07:15:45
  • C#/Java连接sqlite与使用技巧

    2021-07-10 08:34:05
  • C# 设计模式系列教程-组合模式

    2022-05-31 09:20:58
  • Java代码为例讲解堆的性质和基本操作以及排序方法

    2021-08-27 05:32:25
  • Java字符串常量池示例详解

    2021-10-11 10:55:02
  • C#递归实现显示文件夹及所有文件并计算其大小的方法

    2023-09-13 01:56:01
  • C#中Params的用法

    2023-06-03 22:23:27
  • Spring Boot Admin 进行项目监控管理的方法

    2021-09-01 23:39:19
  • java实现分页显示效果

    2021-12-29 20:17:43
  • 使用JAVA实现http通信详解

    2023-11-12 12:21:12
  • Spring的IOC控制反转详解

    2023-08-24 02:50:50
  • 深入理解Java设计模式之建造者模式

    2022-12-06 00:57:37
  • C#实现IP摄像头的方法

    2023-12-09 03:42:51
  • asp之家 软件编程 m.aspxhome.com