双色球大乐透随机实现
每次抱着一夜暴富的梦想去买彩票,懒得自己选号,又不放心彩票店机选机制,那不如自己随机,中不了也没法抱怨,兄弟们,等我中奖的好消息吧
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Random;
public class ChasingDreams {
public static void main(String[] args) {
// 双色球组合
// 前区6位1-33 后区1位1-16
// 参数列表:前区起始值、前区结束值、后区起始值、后区结束值、前后区分界位数、总执行次数
showBallArray(1, 33, 1, 16, 6, 5);
// 大乐透组合
// 前区5位1-35 后区2位1-12
// 参数列表:前区起始值、前区结束值、后区起始值、后区结束值、前后区分界位数、总执行次数
showBallArray(1, 35, 1, 12, 5, 5);
}
// 公共传值
public static void showBallArray(int frontStart, int fronEnd, int backStart, int backEnd, int middle, int counts) {
ArrayList doubleColorBallCollection = new ArrayList();
// 执行随机获取
for (int i = 0; i < counts; i++) {
doubleColorBallCollection.add(retrunBallArray(frontStart, fronEnd, backStart, backEnd, middle));
}
// 循环遍历输出
doubleColorBallCollection.forEach(doubleColorBall -> {
// 拼接出前区后区
System.out.println(((ArrayList) doubleColorBall).subList(0, middle) + " --- " + ((ArrayList) doubleColorBall).subList(middle, 7));
});
}
// 公共返回
public static ArrayList retrunBallArray(int frontStart, int fronEnd, int backStart, int backEnd, int middle) {
// 最终返回
ArrayList returnBall = new ArrayList();
// 公共前区
ArrayList fronReturnBall = new ArrayList();
// 公共后区
ArrayList backReturnBall = new ArrayList();
// 随机数
Random random = new Random();
// 前区随机数
int fronRandomNum = 0;
// 后区随机数
int backRandomNum = 0;
// 前区后区总数恒为7位
for (int i = 0; i < 7; i++) {
// 小于前后区分界位数,随机前区球
if (i < middle) {
// 获取前区随机数
fronRandomNum = random.nextInt(fronEnd - frontStart + 1) + frontStart;
// 若已存在前区,则重新随机
if (fronReturnBall.contains(fronRandomNum)) {
i--;
} else {
// 加入不重复球
fronReturnBall.add(fronRandomNum);
}
} else { // 大于前后区分界位数,随机后区球
// 获取后区随机数
backRandomNum = random.nextInt(backEnd - backStart + 1) + backStart;
// 若已存在后区,则重新随机
if (backReturnBall.contains(backRandomNum)) {
i--;
} else {
// 加入不重复球
backReturnBall.add(backRandomNum);
}
}
}
// 前区排序
fronReturnBall.sort(Comparator.naturalOrder());
// 将前区加入最终返回数组
returnBall.addAll(fronReturnBall);
// 后区排序
backReturnBall.sort(Comparator.naturalOrder());
// 将后区加入最终返回数组
returnBall.addAll(backReturnBall);
return returnBall;
}
}
结果输出: