前言
双色球想必都听说过,现在用代码实现双色球。
一、双色球介绍
大家可以参考下面的图:顾名思义,双色球分为红球和蓝球,红球按照顺序排列,没有重复的数字,蓝球则没有限制。
二、代码实现
1 利用列表ArrayList实现
1.1 Random类实现
代码如下
public class Demo03 {
public static void main(String[] args) {
// 定义随机数对象
Random ran = new Random();
// 定义红球用的集合
ArrayList<Integer> redBalls = new ArrayList<>();
// 0 - 15 的值 + 1 就是 1 - 16
// 随机生成篮球的号码
int blueBall = ran.nextInt(16) + 1;
// 不已知循环次数的时候使用 while 循环
while (redBalls.size() < 6){
// 生成一个1-33的随机值,但是不添加进去
int t = ran.nextInt(33) + 1;
// 如果这个值在集合中不存在(保证不重复)
if(!redBalls.contains(t))
// 添加进去
redBalls.add(t);
}
// 对于红球进行升序排序
Collections.sort(redBalls);
//生成
System.out.println("红球:" + redBalls + " | 篮球:" + blueBall);
}
}
1.2 Math.random()实现
代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class Demo04 {
public static void main(String[] args) {
// 定义红球用的集合
ArrayList<Integer> redBalls = new ArrayList<>();
// 0 - 15 的值 + 1 就是 1 - 16
// 随机生成篮球的号码
/**
* Math.random()生成0 - 1之间的值;
* 0 - 1 之间的值 乘以 100 就是 0 - 100之间的值
* 强制类型转换为整型得到 0 - 100 之间的整型数据
* 任意的值除以 16 取余数 能得到的一定是 0 - 15 的值
* 0 - 15 的值 + 1 就是 1 - 16
*/
int blueBall = (int)(Math.random() * 100000) % 16 + 1;
// 不已知循环次数的时候使用 while 循环
while (redBalls.size() < 6){
// 生成一个1-33的随机值,但是不添加进去
int t = (int)(Math.random() * 100000) % 33 + 1;
// 如果这个值在集合中不存在
if(!redBalls.contains(t))
// 添加进去
redBalls.add(t);
}
// 对于红球进行升序排序
Collections.sort(redBalls);
// 红球
System.out.println("红球:" + redBalls + " | 篮球:" + blueBall);
}
}
2 利用数组实现
public class Test02 {
public static void main(String[] args) {
int[] red = new int[6];
int j = 0;
for(int i = 0 ; i < 6 ; i++){
int t = (int)(Math.random() * 100 % 16) + 1;
for(j = 0 ; j < i ; j++){
if(t == red[j]){
//相等的话就直接退出
break;
}
}
//i == j证明可以添加(没有重复的)
if(j < i){//证明球重复了,不能添加
i--;//重新生成
}else{
red[i] = t;//否则可以添加
}
}
//最简单的冒泡排序
for(int i = 0 ; i < 5 ; i ++){
for(int k = 0 ; k < 5 - i - 1; k++){
if(red[k] > red[k + 1]){
red[k] ^= red[k + 1];
red[k + 1] ^= red[k];
red[k] ^= red[k + 1];
}
}
}
System.out.print("red: [");
for(int i : red){
System.out.print(i);
if(i == red[red.length - 1]){
System.out.println("]");
}else{
System.out.print(" ");
}
}
System.out.println("blue: [" + (int)(100 * Math.random() % 16 + 1) + "]");
}
}
总结
每天一个小案例,轻松学java,哈哈哈