zoukankan      html  css  js  c++  java
  • 使用 Java Math.random() 生成指定位数随机数 对应 python 生成指定位数随机数

    Java 中常见的随机数的生成方式有三种

    第一种:通过 Math.random() 返回一个0(包含)到1(不包含)之间的 double 值。
    第二种:通过 Random 类来产生一个随机数。
    第三种:通过 System.currentTimeMillis() 来获取一个当前时间毫秒数的 long 型数字。

    Java指定位数随机数

    通过以上三种方式,可演变的使用Java生成指定位数随机数的方式就有很多种,下面来扩列两种且小而巧的方法:
    使用 Math.random() 生成指定位数随机数
    比如生成指定8位随机数,可以像下面一样改造一下:

    int randomNum = (int) ((Math.random() * 9 + 1) * 10000000);
    

    注:参数 10000000 可以控制随机数位数,10000000 这样出来8位数,100000 这样出来6位数。

    注:(int) (Math.random() * 100 + 1) 和 (int) (Math.random() * 101) 的区别:

    Math.random() * 100 + 1:产生1~100之间的随机整数(包括1和100)
    Math.random() * 101 :产生0~100之间的随机整数(包括0和100)
    测试结果:重复率比较高。
    随机生机8位数,100000次测试,生成不重复个数:99948,重复个数:52

    使用Java new Random() 生成指定位数随机数

    用 new Random().nextInt(); 可能会出现负数或较指定位数不够的情况。可以像下面一样改造一下补齐:

    String randomNum = String.format("%010d", Math.abs(new Random().nextInt()));
    

    Java随机示例

        public static void main(String[] args) {
            String randomNum;
            List<String> numList1 = new ArrayList<>();
            List<String> numList2 = new ArrayList<>();
            for (int i = 0; i < 100000; i++) {
                randomNum = String.format("%010d", Math.abs(new Random().nextInt()));
                if (numList1.contains(randomNum)) {
                    numList2.add(randomNum);
                } else {
                    numList1.add(randomNum);
                }
            }
     
            System.out.println("随机生机10位数,100000次测试,生成不重复个数:" + numList1.size() + ",重复个数:" + numList2.size());
        }
    

    注:String 占位表达格式中:0代表前面要补的字符,10代表字符串长度,d表示参数为整数类型。

    测试结果:10万个有点慢
    随机生机10位数,100000次测试,生成不重复个数:99998,重复个数:2
    100000个随机10位数,2个重复。但一般场景够用了.

    Python生成随机5位数对应 Java 的 Math.random()方法

    import math
    import random
    num_str = math.floor(1e5 * random.random())
    print(num_str)
    

    使用Python生成随机的五位手机验证码

    # -*- coding:utf-8 -*-
    #生成五位随机数,模仿手机验证码
    #导入random库,可以生成随机数
    import random
     
    def ran():
         L = []
         M = []
    #通过遍历5次,生成五个元素,并插入列表L
         for i in range(5):
                 L.append(random.randint(0,9))
                 if len(L) >= 5:
                         break
    #通过遍历将L的五个元素由数字转为字符串,导入空列表M,并使用join方法合成为字符串     
         for d in L:
                 M.append(str(d))
         S = '' .join(M)
     
         print(S)
    #调用函数ran()
    ran()
    
  • 相关阅读:
    2020系统综合实践 第4次实践作业
    2020系统综合实践 第3次实践作业
    2020系统综合实践 第2次实践作业
    第1次实践作业
    Wireshark组 2019SDN大作业
    第04组 Beta版本演示
    转载:北大老师语录(2016年秋)
    康德哲学基本概念
    white album句子
    tex基础
  • 原文地址:https://www.cnblogs.com/gqv2009/p/13725128.html
Copyright © 2011-2022 走看看