java基础--浅谈Random

实例一

/***
 * 通过Random类的实例生成伪随机数流,常用的伪随机数生成方法,类型包括Boolean,int,long,double
 *    本例使用setSeed()方法设置随机数种子值。使用nextInt()方法获得一个小于参数值的随机整数
 *    setSeed()方法:random类的setSeed()方法使用单个long种子,设置次随机数生成器的种子值,
 * public void setSeed(long seed)
 *    seed:为随机数生成器设置的种子值
 *    nextInt()方法
 *   random类的nextInt()方法用于返回一个伪随机数。它是取自次随机数生成器序列在0(包括)和指定值(不包括)之间均匀分布的int值
 *   public intnextInt(int n) 
 * n:要返回的随机数的范围,必须为正数
 * 返回值:下一个伪随机数,它是取自此随机数生成器序列中0(包括)和n(不包括)之间均匀分布的int值
 * 
 * 
 * **/
public static void main(String[] args) {
                Scanner scanner =new Scanner(System.in);
                        int times = scanner.nextInt();// 获得用户输入的需要生成的中奖号码个数
                        // 省略提示购买数量太多的代码
                        StringBuilder sb = new StringBuilder();// 利用StringBuilder类保存彩票中奖号码
                        for (int i = 0; i < times; i++) {
                                int number = new Random().nextInt((int) Math.pow(10, 7));// 生成随机数
                                String luckNumber = "" + number;
                                while (luckNumber.length() < 7) {
                                        luckNumber = "0" + luckNumber;// 如果随机数长度不够7位用0补齐
                                }
                                sb.append(luckNumber + "\n");
                        }
                      System.out.println(sb.toString());// 显示生成的中奖号码
                }
        }

在这里插入图片描述

实例二

/**
 *使用list计划存储号码,然后从该List集合中随机获得号码。由于大乐透的每一组号码中的前段号码或后短号码是不允许重复的,
 *  因此从List集合中随机获得的号码后,就将所获得的号码从该List集合中移除,这样可以避免获得的号码重复
 * **/
 
   public static void main(String[] args) {
                Scanner scanner =new Scanner(System.in);

                int times =scanner.nextInt();// 获得用户输入的需要生成的中奖号码个数
                // 省略提示购买数量太多的代码
                StringBuilder sb = new StringBuilder();// 创建字符串生成器对象
                for (int i = 0; i < times; i++) {
                        List<String> startList = getStartNumber();// 获得前段号码的集合
                        List<String> endList = getEndNumber();// 获得后段号码的集合
                        for (int m = 0; m < startList.size(); m++) {
                                sb.append(startList.get(m));// 在字符串生成器中添加前段号码
                        }
                        sb.append("    ");
                        for (int n = 0; n < endList.size(); n++) {
                                sb.append(endList.get(n));// 在字符串生成器中添加后段号码
                        }
                        sb.append("\n");
                }
                System.out.println(sb.toString());// 在文本域中显示号码
        }



        /**
         * 随机生成前段5个号码的方法
         *
         * @return
         */
        public static List<String> getStartNumber() {
                List<String> list = new ArrayList<String>(); // 创建前段号码集合
                String luckyNumber = "";
                for (int i = 1; i < 36; i++) { // 初始化前段号码集合
                        if (i < 10) {
                                list.add("0" + i + "  ");// 添加0~9的号码
                        } else {
                                list.add("" + i + "  ");// 添加大于9的号码
                        }
                }
                int roundIndex = 0;
                List<String> luckylist = new ArrayList<String>(); // 保存前段号码的List集合
                for (int j = 0; j < 5; j++) {
                        int amount = list.size(); // 获取前段号码的个数
                        Random r = new Random(); // 创建并实例化Random的对象
                        roundIndex = r.nextInt(amount); // 获取一个0到amount-1的随机数
                        luckyNumber = list.get(roundIndex); // 获取幸运数字
                        luckylist.add(luckyNumber); // 添加luckylist中
                        list.remove(roundIndex); // 移除刚刚产生的号码
                }
                Collections.sort(luckylist); // 对前段号码进行排序
                return luckylist;
        }

        /**
         * 随机生成后段2个号码的方法
         *
         * @return
         */
        public static List<String> getEndNumber() {
                List<String> list = new ArrayList<String>(); // 创建后段号码集合
                String luckyNumber = "";
                for (int i = 1; i < 13; i++) { // 初始化后段号码集合
                        if (i < 10) {
                                list.add("0" + i + "  ");// 添加0~9的号码
                        } else {
                                list.add("" + i + "  ");// 添加大于9的号码
                        }
                }
                int roundIndex = 0;
                List<String> luckylist = new ArrayList<String>(); // 保存后段号码的List集合
                for (int j = 0; j < 2; j++) {
                        int amount = list.size(); // 获取后段号码的个数
                        Random r = new Random(); // 创建并实例化Random的对象
                        roundIndex = r.nextInt(amount); // 获取一个0到amount-1的随机数
                        luckyNumber = list.get(roundIndex); // 获取幸运数字
                        luckylist.add(luckyNumber); // 添加luckylist中
                        list.remove(roundIndex); // 移除刚刚产生的号码
                }
                Collections.sort(luckylist); // 对后段号码进行排序
                return luckylist;
        }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值