Java算法双色球
所以有点复杂,但是笔记都写好了。
完成
1.生成7个随机数。
2.验证是否存在相同的随机数。
3.确定数字选择区域
分类
//打包com . color . util;
导入Java . util . ArrayList;
导入Java . util . list;
导入Java . util . scanner;
公共类双球{
//用于保存生成的每注双色球号码。
个人分发名单& ltint[]>ballList
//保存音符编号数组。
private int[]球;
//红球数字总和的起始区域
private int开始;
//红色球数总和的结束区域
私有int END
/**
*施工方法
* @param number,生成数字的个数
*/
public DoubleBall(){
Scanner s =新扫描仪(system . in);
System.out.println("===请输入生成的随机数个数= = ");
int number = s . nextint();
this . init();
//完成ballList的初始化。
ballList = new ArrayList & ltint[]>();
for(int I = 0;我& lt号码;i++){
//初始化球
ball = new int[7];
//生成音符编号
ball = this.createBall(球);
while(true){
int count = 0;
//去掉最后一个数字后把所有数字相加,验证是否在指定区域。
for(int j = 0;j & ltball . length-1;j++){
count+= ball[j];
}
//如果生成的号码不在指定区域,重新生成号码。
如果(!(计数& gt开始& amp& amp计数& ltEND)){
ball = this.createBall(球);
//否则,退出while并将球添加到列表中。
}否则{
打破;
}
}
ball = this . sort(ball);
//将此便笺生成的数字添加到列表中。
ballList.add(球);
}
}
/**
*七个数字生成一个双色球
* @param球
* @返回
*/
public int[]create ball(int[]ball){
for(int I = 0;我& lt球.长度;i++){
//最后一个号码默认为蓝球保留。
如果(我& lt球.长度-1){
//如果是红球,验证每个生成的数是否已经存在。
ball = this.validateBall(ball,I);
}否则{
//如果是蓝球,直接生成1到16之间的随机数。
ball[I]=(int)math . round(math . random()* 15+1);
}
}
//生成数后,返回此便笺生成的数。
回球;
}
/**
*一次只生成一个红色数字,并验证该数字是否已经存在。
*如果存在,重新生成编号,直到没有重复的编号。
* @param球
* @param index生成红球数组的下标,也就是数字。
* @返回
*/
public int[]validate ball(int[]ball,int index){
//生成一个随机数1-33。
int random =(int)math . round(math . random()* 32+1);
while(true){
int I = 0;
for(;我& lt指数;i++){
//如果有重复的号码,
if(random==ball[i]){
//重新生成号码
random =(int)math . round(math . random()* 32+1);
//并跳出for循环,进入while循环。
I = index+1;
}
}
//如果所有数字都通过验证,将这个数字插入数组并返回。
if(i==index){
球[指数] =随机;
回球;
}
}
}
/**
*显示生成的双色球号码。
*
*/
public void displayBall(){
System.out.println("====生成的数字详情如下= = ");
for(int[] ball:ballList){
for(int I = 0;我& lt球.长度;i++){
//如果数字少于两位数,则在前面加“0”。
system . out . print(((ball[I]& lt;10)?(" 0 "+ball[I]):ball[I])+" \ t ");
}
system . out . println();
}
}
/**
*完成初始化,制作双色球号码。
*开始和结束区域
*
*/
public void init(){
Scanner s =新扫描仪(system . in);
System.out.println("===请输入起始数字= = ");
这个。START = s . nextint();
System.out.println("===请输入结束号= = ");
这个。END = s . nextint();
如果(这个。开始& lt=25 ||这个。END & gt=150){
System.out.println("输入数字非法,退出程序!");
system . exit(0);
}
}
/**
*对数字进行排序,仅在最后一个数字之前。
*要排序的数字。
* @param球
* @返回
*/
private int[] sort(int[] ball){
for(int I = 0;我& ltball . length-1;i++){
for(int j = 0;j & ltball . length-I-2;j++){
if(ball[j]& gt;ball[j+1]){
int t = ball[j];
ball[j]= ball[j+1];
ball[j+1]= t;
}
}
}
回球;
}
公共静态void main(String[] args){
double ball ball = new double ball();
ball.displayBall()。
}
}