闲来无聊写个双色球快速生成的代码,仅供娱乐。
首先是了解双色球规则:“双色球”每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1--33中选择(不可重复);蓝色球号码从1--16中选择。
下面就是直接上代码了:
package com.test;
import cn.hutool.core.date.DateTime;
import java.util.*;
public class Test {
public static void main(String[] args) {
Test test = new Test();
System.out.println("双色球预测:");
for(int i=0;i<5;i++) {
DateTime dateTime = new DateTime();
test.getColorBalls(dateTime.getTime()*i);
}
}
private void getColorBalls(Long time) {
String[] redBalls = {"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"};
String[] blueBalls = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"};
List<String> list = Arrays.asList(redBalls);
Random r = new Random(time);
List<Integer> newRedBalls = new ArrayList<>();
for(newRedBalls.size();newRedBalls.size()<6; ) {
Integer radom = r.nextInt(33);
String item = list.get(radom);
if(newRedBalls.indexOf(item) == -1) {
newRedBalls.add(Integer.parseInt(item));
}
}
Random r2 = new Random(time);
for(int i = 0;i<newRedBalls.size() - 1 ;i++) {
for(int j = 1;j<newRedBalls.size() - i ;j++) {
Integer temp;
if(newRedBalls.get(j-1).intValue()>newRedBalls.get(j).intValue()) {
temp = newRedBalls.get(j-1);
newRedBalls.set(j-1,newRedBalls.get(j));
newRedBalls.set(j,temp);
}
}
}
System.out.print("红球:");
newRedBalls.forEach(a -> System.out.print(a+" "));
System.out.print("蓝球:");
System.out.println(Integer.parseInt(blueBalls[r2.nextInt(16)]));
}
}
最开始Random的seed是直接在getColorBalls()里面放的new Date().getTime(),但是出来的数据都是一样的,打印出来的new Date().getTime()也是相同的,后来就放到了上面,并且乘了*,确保每次seed都是不一样的。输出前使用冒泡排序调整了红球的顺序,最后再打印蓝球。
输出效果大概就是这样:
双色球预测:
红球:1 3 6 18 20 29 蓝球:12
红球:1 6 16 21 24 29 蓝球:9
红球:2 4 9 10 28 31 蓝球:8
红球:5 9 15 24 29 32 蓝球:7
红球:7 7 8 10 12 12 蓝球:4
红球:3 6 7 13 23 25 蓝球:9
红球:2 10 11 13 24 32 蓝球:15
红球:2 6 14 14 24 29 蓝球:5
红球:1 5 7 9 14 33 蓝球:16
红球:10 14 14 23 26 31 蓝球:11
Process finished with exit code 0