使用 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()
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~