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()。

}

}