一、生成号码
/**
* 生成六位蓝球 + 一位红球
* @author SUNXIULONG
* @date 2020年5月28日
*/
public static List getNumber () {
Random rand = new Random();
int nextInt;
List<Integer> one = new ArrayList<>();
// 随机生成六位红球
for (int i = 0; i < 6; i++) {
nextInt = rand.nextInt(33) + 1;
if (one.contains(nextInt)) {
nextInt = rand.nextInt(33) + 1;
}
one.add(nextInt);
}
// 排序
one = one.stream().sorted((x, y) -> x-y).collect(Collectors.toList());
// 随机生成蓝球
one.add(nextInt = rand.nextInt(16) + 1);
return one;
}
二、验证
// 循环一百万次看随机生成的号码有没有命中当期双色球一等奖号码
for (int i = 0; i < 1000000; i++) {
List a = getNumber();
int object = (int)a.get(6);
String s = "蓝色球命中, 恭喜!!!";
// 判断蓝色球是否命中
if (object == 3) {
s = "蓝色球命中, 恭喜!!!";
} else {
s = "蓝色球未命中;";
}
a.remove(6);
int n = 0;
// 判断命中几个红色球
if (a.contains(1)) {
n++;
}
if (a.contains(3)) {
n++;
}
if (a.contains(6)) {
n++;
}
if (a.contains(17)) {
n++;
}
if (a.contains(20)) {
n++;
}
if (a.contains(29)) {
n++;
}
if (n>5) {
System.out.println(s + n +"个红球命中;随机号码为:" + a.toString());
}
}
三、结果 由于一百万次中一等奖概率比较低, 换成一千万次, 跑了一次中了三个一等奖
蓝色球命中, 恭喜!!!6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球命中, 恭喜!!!6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球未命中;6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]
蓝色球命中, 恭喜!!!6个红球命中;随机号码为:[1, 3, 6, 17, 20, 29]