python生成五位随机数_使用 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 numList1 = new ArrayList<>();

List 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()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值