java练习题
写一个双色球程序:java、scala
双色球:蓝球+红球组成的彩票一注
蓝球:1~16的号码组成
红球:1~32的号码组成
一注双色球:6个红球+1个蓝球组成的
要求大家写一个程序,每次都能随机一注彩票
package com.bolin.game;
import java.util.*;
//写一个双色球程序:java、scala
//双色球:蓝球+红球组成的彩票一注
//蓝球:1~16的号码组成
//红球:1~32的号码组成
//一注双色球:6个红球+1个篮球组成的
//要求大家写一个程序,每次都能随机一注彩票
public class TwoColorsBall {
public static void main(String[] args) {
// 新建list和ArrayBuffer对象
List<Integer> list = new ArrayList<>();
StringBuffer sb = new StringBuffer();
//1 随机一个1-32数字 存放到list中
Random random = new Random();
for (int i = 0; i < 6; i++) {
int red = (int)(Math.random() * 32 + 1);
//1.1 第一次直接存放到list中
if(i == 1) {
list.add(red);
} else {
//1.2 下次存放需要查看list是否包含 包含则重新随机数字 不包含则放入数组
if(list.contains(red) || red == 0) {
i--;
}else if(!list.contains(red)) {
list.add(red);
}
}
}
//2 随机一个蓝球1-16数字直接存放到数组中
int blue = (int)(Math.random() * 16 + 1);
list.add(blue);
//3 遍历list StringBuffer 依次添加组成一个字符串 即为中奖号码
for (Integer number : list) {
sb.append(number);
sb.append(",");
}
//4 规范输出
String res = sb.substring(0, sb.length() - 1);
System.out.println(res);
}
}
使用布隆过滤器思想
package com.qf.bigdata.reflect;
import java.util.Arrays;
public class TwoColorsBall_2 {
public static void main(String[] args) {
//1. 创建数组存放最终结果
int[] ball = new int[7];
//2. 随机篮球并存放
int blue = (int)(Math.random() * 16 + 1);
ball[6] = blue;
//3. 创建红球的号码的数组
int[] reds = new int[32];// {0,0,1,0,0,...,0}
//4. 循环随机红球
int index = 0;
while (index != 6) {
int red = (int)(Math.random() * 32 + 1); //3
if (reds[red - 1] == 0) { // 表示这个位置的红球号码没有出现过
ball[index] = red; // 存放红球号码
reds[red - 1] = 1; // 将对应的号码数组调整为1,表示这个号码已经存在了
index++;
}
}
System.out.println(Arrays.toString(ball));
}
}