目录
需求说明
实现思路
第一种:java代码
第二种:redis的set结构
具体实现
方式一:Java数组
step1: 构建红球数组
step2: 构建蓝球数组
step3:出球方法
step4:已出的球构建成一个集合
step5:调用方法执行
方式二:Redis的set结构模拟
step1:构建并随机取红球
step2: 构建并随机取蓝球
欢迎补充
需求说明
双色球真实的开奖情况是33个红球依此出6个,16个蓝球出1个。
实现思路
第一种:java代码
数组随机取数并删除循环5次
第二种:redis的set结构
利用redis的数据结构和现有的操作命令完成
具体实现
方式一:Java数组
step1: 构建红球数组
private static ArrayList buildRedArray(){
ArrayList list = new ArrayList<>();
for (int i = 1; i <= 33; i++) {
list.add(i);
}
return list;
}
step2: 构建蓝球数组
private static ArrayList buildBlueArray(){
ArrayList list = new ArrayList<>();
for (int i = 1; i <= 16; i++) {
list.add(i);
}
return list;
}
step3:出球方法
private static int popBall(ArrayList list){
Random random = new Random();
int index= random.nextInt(list.size()) ;
return index;
}
step4:已出的球构建成一个集合
private static void result(){
//构建红球数组
ArrayList newRedList = buildRedArray();
//构建红球已出球空集合
ArrayList winningNumbersList = new ArrayList<>();
//每出一个球集合里就把这个球剔除掉,集合剩下的元素继续随机出
for (int i = 0; i < 6; i++) {
int winningBallIndex = popBall(newRedList);
winningNumbersList.add(newRedList.get(winningBallIndex));
newRedList.remove(winningBallIndex);
}
//对结果集进行排序
Collections.sort(winningNumbersList);
System.out.println("红色中奖号码="+winningNumbersList);
//蓝色球只需一次
ArrayList newBlueList = buildBlueArray();
Integer integer = newBlueList.get(popBall(newBlueList));
System.out.println("蓝色中奖号码="+integer);
}
step5:调用方法执行
//出5组凑十块钱
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("第"+(i+1)+"组");
result();
System.out.println("-------------------------");
}
}
方式二:Redis的set结构模拟
step1:构建并随机取红球
step1: 构建红球数组
private static ArrayList buildRedArray(){
ArrayList list = new ArrayList<>();
for (int i = 1; i <= 33; i++) {
list.add(i);
}
return list;
}
step2: 构建蓝球数组
private static ArrayList buildBlueArray(){
ArrayList list = new ArrayList<>();
for (int i = 1; i <= 16; i++) {
list.add(i);
}
return list;
}
step3:出球方法
private static int popBall(ArrayList list){
Random random = new Random();
int index= random.nextInt(list.size()) ;
return index;
}
step4:已出的球构建成一个集合
private static void result(){
//构建红球数组
ArrayList newRedList = buildRedArray();
//构建红球已出球空集合
ArrayList winningNumbersList = new ArrayList<>();
//每出一个球集合里就把这个球剔除掉,集合剩下的元素继续随机出
for (int i = 0; i < 6; i++) {
int winningBallIndex = popBall(newRedList);
winningNumbersList.add(newRedList.get(winningBallIndex));
newRedList.remove(winningBallIndex);
}
//对结果集进行排序
Collections.sort(winningNumbersList);
System.out.println("红色中奖号码="+winningNumbersList);
//蓝色球只需一次
ArrayList newBlueList = buildBlueArray();
Integer integer = newBlueList.get(popBall(newBlueList));
System.out.println("蓝色中奖号码="+integer);
}
step5:调用方法执行
//出5组凑十块钱
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("第"+(i+1)+"组");
result();
System.out.println("-------------------------");
}
}
方式二:Redis的set结构模拟
step1:构建并随机取红球
private static ArrayList buildBlueArray(){
ArrayList list = new ArrayList<>();
for (int i = 1; i <= 16; i++) {
list.add(i);
}
return list;
}
step3:出球方法
private static int popBall(ArrayList list){
Random random = new Random();
int index= random.nextInt(list.size()) ;
return index;
}
step4:已出的球构建成一个集合
private static void result(){
//构建红球数组
ArrayList newRedList = buildRedArray();
//构建红球已出球空集合
ArrayList winningNumbersList = new ArrayList<>();
//每出一个球集合里就把这个球剔除掉,集合剩下的元素继续随机出
for (int i = 0; i < 6; i++) {
int winningBallIndex = popBall(newRedList);
winningNumbersList.add(newRedList.get(winningBallIndex));
newRedList.remove(winningBallIndex);
}
//对结果集进行排序
Collections.sort(winningNumbersList);
System.out.println("红色中奖号码="+winningNumbersList);
//蓝色球只需一次
ArrayList newBlueList = buildBlueArray();
Integer integer = newBlueList.get(popBall(newBlueList));
System.out.println("蓝色中奖号码="+integer);
}
step5:调用方法执行
//出5组凑十块钱
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("第"+(i+1)+"组");
result();
System.out.println("-------------------------");
}
}
方式二:Redis的set结构模拟
step1:构建并随机取红球
private static void result(){
//构建红球数组
ArrayList newRedList = buildRedArray();
//构建红球已出球空集合
ArrayList winningNumbersList = new ArrayList<>();
//每出一个球集合里就把这个球剔除掉,集合剩下的元素继续随机出
for (int i = 0; i < 6; i++) {
int winningBallIndex = popBall(newRedList);
winningNumbersList.add(newRedList.get(winningBallIndex));
newRedList.remove(winningBallIndex);
}
//对结果集进行排序
Collections.sort(winningNumbersList);
System.out.println("红色中奖号码="+winningNumbersList);
//蓝色球只需一次
ArrayList newBlueList = buildBlueArray();
Integer integer = newBlueList.get(popBall(newBlueList));
System.out.println("蓝色中奖号码="+integer);
}
step5:调用方法执行
//出5组凑十块钱
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("第"+(i+1)+"组");
result();
System.out.println("-------------------------");
}
}
方式二:Redis的set结构模拟
step1:构建并随机取红球
step1:构建并随机取红球
step2: 构建并随机取蓝球



