java练习题——双色球

该博客展示了两个Java程序,用于随机生成双色球彩票号码。程序分别使用了不同的方法,一个是通过ArrayList和StringBuffer实现,另一个利用了布隆过滤器的思想。每个程序都能确保生成的一注彩票包含6个不同的红球(1-32)和1个蓝球(1-16)。
摘要由CSDN通过智能技术生成

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));
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值