package gzj.day05;
import java.util.Arrays;
import java.util.Random;
public class DoubleColorBalls_v1 {
/**
* @Description
* 双色球随机选号
* 1.红球:01-33随机选取出6个,不能重复
* 按照顺序排序(升序)
* 2.篮球:01-16随机取出1个
*/
public static void main(String[] args) {
int howMuch = 1; //选1组
System.out.println("红球\t\t\t蓝球");
for(int i = 0; i < howMuch; i++) {
String numbers = getNumbers(); // 获取号码
System.out.println(numbers);
}
}
/**
* 产生一组双色球选号
* @return 一组号码
*/
public static String getNumbers() {
//33选6
int[] exist = new int[6]; //默认全0
for (int i = 0; i < exist.length; i++) {
int ball = getABall(33,exist); //选球
exist[i] = ball; //暂存已选的球
}
Arrays.sort(exist);
//16选1
int specificBall = getABall(16,null);
//字符串拼接
String numbers = "";
for (int i = 0; i < exist.length; i++) {
// 如果 exist[i] 小于 0,则输出 0+exist[i] 的值,否则直接输出 exist[i] 的值
String num = exist[i] < 10 ? "0" + exist[i] : "" + exist[i];
if (i == 0) {
numbers = numbers + num;
}else {
numbers = numbers + ("," + num);
}
}
// 先输出红球好吗,然后输出一个制表符,然后输出篮球号码
numbers = numbers + "\t" + (specificBall < 10 ? "0" + specificBall : ""+ specificBall);
return numbers;
}
/**
* 摇出一个号码
* @param total 球总数
* @param exist 已经选出的球
* @return 一个新号码
*/
private static int getABall(int total,int[] exist){
Random random = new Random();
int ball = random.nextInt(total)+1;
while(true){
if(contains(exist,ball)){ //判断是否重复
ball = random.nextInt(total)+1;
}else{
break; //取到了新球,结束
}
}
return ball;
}
/**
* 判断数组是否包含某个元素
* @param array 数组
* @param value 元素
* @return 是否存在
*/
private static boolean contains(int[] array,int value){
boolean have = false;
if(array == null){
return false;
}
for(int i=0;i<array.length;i++){
if(array[i] == value){
have = true;
break;
}
}
return have;
}
}
Q.E.D.
Comments | 0 条评论