双色球模拟综合实例
一、双色球的玩法
- 双色球的投注分为红球号码区和蓝球号码区。
- 红球号码的范围为1-33。
- 蓝球号码的范围为1-16。
- 每期从33个红球中选取6个号码,从16个蓝球中选取1个号码。
- 双色球玩法是竞猜开奖的6个红球号码和1个蓝球号码,顺序不限制。
-
具体中奖情况如下。
二、案例分析
- 如何产生蓝球和红球?
- 如何接受用户选号?
- 如何验证是否中奖?
- 公布本期的中奖号码。
三、实现步骤
- 整体实现思路。
- 随机取值不重复算法。
- 判断是否中奖的逻辑。
- 结果输出。
四、具体代码实现
// 随机取值不重复算法
public static void method(int a[], int b[]) {
int j = 0;
for (int i = 0; i < b.length; i++) {
Random random = new Random();
j = random.nextInt(a.length - i);
b[i] = a[j];
// 讲a[j]换到最后
int temp = a[j];
a[j] = a[a.length - i - 1];
a[a.length - i - 1] = temp;
}
}
完整代码可参考
https://github.com/JacksonMike/Java_ultimate/blob/master/LotteryDemo.java
算法应用的场景分析
- 考试系统中生成随机不重复的考试试题算法设计程序。
- 统计学中随机不重复抽样算法。
- 工作人员随机分配工作地点。
- 非诚勿扰随机抽取嘉宾出场顺序。
- 分布式系统随机分配符合要求的请求处理服务器。