双色球算法

此Java程序模拟了双色球彩票的机选过程,随机生成6个红球和1个蓝球号码。用户可以输入自己选择的号码,程序会验证是否中奖,并公布开奖结果。中奖等级根据红球和蓝球匹配数量确定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


import java.util.Random;
import java.util.Scanner;

/**
 * 双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01~33,蓝球号码范围为01~16。
 * 双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,
 * 双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺序不限。
 *  1、产生蓝球和红球,是机选呢,还是手选,机选的还就随机产生6红1蓝,
2、接收用户选号
3、验证是否中奖
4、公布本期中奖号码
 */
public class Day5 {
public static void main(String[] args) {
int[] userRedBall = new int [6];
int userBlueBall = 0;
int[] sysRedBall = new int[6]; //系统随机生成六个空间的随机数
int sysBlueBall = 0;
int redCount = 0;   //记录红球的选中的个数
int blueCount = 0;  //记录蓝球的选中的个数

//填充红求被选区数组
Random r = new Random();

int[] redBall = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};
int index = 0; //用于作为下标
for(int i=0;i<sysRedBall.length;i++){ // 生成六个红球

while(true){   //不知道要循环的次数
index = r.nextInt(33);  // 每次生成一个下表
if(redBall[index]!=-1){ //不等于-1表示当前号还在,当等于-1,那么这个号码就被取过了
sysRedBall[i] = redBall[index]; 
redBall[index] = -1;    // 
break;

}
}
}

sysBlueBall = r.nextInt(16)+1; // 生成篮球
//接受用户的选号
Scanner input = new Scanner(System.in);
System.out.println("请选择(1-33不重复的红球号码)");
for(int i=0;i<userRedBall.length;i++){
userRedBall[i] = input.nextInt();  //将用户的选的数存入
}
System.out.println("请选择1个篮球的号码(1 - 16)");
userBlueBall = input.nextInt();
//判断用户是否中奖
for(int i=0;i<sysRedBall.length;i++){
for(int j=0;j<userRedBall.length;j++){
if(sysRedBall[i]==userRedBall[j]){
redCount++;
break;
}
}
}
if(redCount==6 && blueCount==1){
System.out.println("恭喜你中了一等奖");
}else if(redCount==6 && blueCount==0){
System.out.println("恭喜你中了二等奖");
}else if(redCount==5 && blueCount==1){
System.out.println("恭喜你中了三等奖");
}else if((redCount==5 && blueCount==0) || (redCount==4 && blueCount==1)){
System.out.println("恭喜你中了四等奖");
}else if((redCount==4 && blueCount==0) || (redCount==3 && blueCount==1)){
System.out.println("恭喜你中了五等奖");
}else if(blueCount==1){
System.out.println("恭喜你中了六等奖");
   }else{
    System.out.println("没有中奖,继续努力");
   }
//公布结果
System.out.println("本期的红球号码");
int temp =1;
for(int i=0;i<sysRedBall.length-1;i++){
for(int j=0;j<sysRedBall.length-1-i;j++){
if(sysRedBall[j]>sysRedBall[j+1]){
temp = sysRedBall[j];
sysRedBall[j] = sysRedBall[j+1];
sysRedBall[j+1] = temp;
}
}
}
for(int i=0;i<sysRedBall.length;i++){
System.out.print(sysRedBall[i]+" ");
}
System.out.println();
System.out.println("本期的篮球号码是 :"+sysBlueBall);
}
}
好的,我可以为您提供一种使用Java编写的双色球算法,具体实现如下: 首先,定义一个包含所有彩球号码的数组,如下所示: int[] balls = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}; 然后,定义一个方法来生成一组随机的6个红色彩球号码,实现代码如下: public int[] generateRedBalls() { int[] redBalls = new int[6]; int index = 0; Random random = new Random(); while (index < 6) { int ball = balls[random.nextInt(balls.length)]; boolean flag = true; for (int i = 0; i < index; i++) { if (redBalls[i] == ball) { flag = false; break; } } if (flag) { redBalls[index++] = ball; } } Arrays.sort(redBalls); return redBalls; } 最后,定义一个方法来生成一个蓝色彩球号码,实现代码如下: public int generateBlueBall() { Random random = new Random(); return balls[random.nextInt(balls.length)]; } 完整的双色球算法实现代码如下: import java.util.Arrays; import java.util.Random; public class DoubleColorBallGenerator { private int[] balls = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}; public int[] generateRedBalls() { int[] redBalls = new int[6]; int index = 0; Random random = new Random(); while (index < 6) { int ball = balls[random.nextInt(balls.length)]; boolean flag = true; for (int i = 0; i < index; i++) { if (redBalls[i] == ball) { flag = false; break; } } if (flag) { redBalls[index++] = ball; } } Arrays.sort(redBalls); return redBalls; } public int generateBlueBall() { Random random = new Random(); return balls[random.nextInt(balls.length)]; } } 希望以上代码能够帮到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值