Java Random类里的种子问题怎么解决
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,本文小编为大家详细介绍"Java Random类里的种子问题怎么解决",内容详细,步骤清晰,细节处理妥当,希望这篇"Java Random类里的种子问题怎么解决"文章能帮助大家解决疑惑,下面跟着小编的
千家信息网最后更新 2025年01月21日Java Random类里的种子问题怎么解决
本文小编为大家详细介绍"Java Random类里的种子问题怎么解决",内容详细,步骤清晰,细节处理妥当,希望这篇"Java Random类里的种子问题怎么解决"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
可以说在现在的计算机语言里面,以及普通用户这里,都是没有办法获得真正的 随机数的。真正的随机数现在也只有在量子计算机当中才有获得。
所以我们现在所说的随机数,也可以称为伪随机数,伪随机数是通过一种算法并且结合当下一个有规律其不断改变的数(比如时间)获得的结果。
我们将这种通过算法集合时间作为初始获得随机数的基准的数据称为种子。
Java当中创建随机数的方式是有两种的:
第以种就是直接创建Random对象
Random random = new Random();
在底层就会调用这个方法来得到种子:
第二种就是将自己创建的种子传进去:
Random random = new Random(5);
在源码里我们可以直接看出种子的数据类型为long型,是长整形。
所以我们现在就有一种办法,在它最开始生成Random对象的时候,获得它生成的种子,然后将获得的种子又传入创建Random的对象当中。是不是就可以获得上面一模一样的随机数了?
先拿java语言来实现一下:
import java.util.Random;public class Demo02 { public static void main(String[] args) { Random random = new Random(5);//在这将5作为种子传入 System.out.println("第一次调用:"); for (int i = 0; i < 5; i++) { System.out.print(random.nextInt(10) + "\t"); //获得10以内的随机数(不包括10) } random.setSeed(5);//在这再将种子5传入Random的种子当中 System.out.println("\n第二次调用:"); for (int i = 0; i < 5; i++) { System.out.print(random.nextInt(10) + "\t"); } }}
在这明显的看出,这个随机数是一点都不随机的。两次只要种子一样,就能返回相同的结果。
在这我再用python语言在实现一次这个功能(主要是java当中没有能调用输出当前种子的方法)。用python有一个更好的理解。
在python里面我会更加详细的写清注释,详细不会很难理解不了的。
import random #导入random内库x = random.getstate() # 获得当前random里的种子print('第一次循环:') #输入语句for i in range(5): #for循环 for i in range(5) ===》 for (int i = 0; i < 5; i++) #在python里面并没哟什么大括号去吧什么括起来,而是要注意锁定,一个锁定就是一个整体 print(random.randint(1, 10), end='\t') #random.randint(1, 10)生成1~10(不包括10)的随机数, # end='\t'表示当前print没有结束,还有一个制表符的键位,也就不换行了print('\n第二次循环')random.setstate(x)#将上面获得的种子再次传入进去for i in range(5): #这里和上面一样,循环出5次 print(random.randint(1, 10), end='\t')
读到这里,这篇"Java Random类里的种子问题怎么解决"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
种子
随机数
循环
问题
对象
就是
文章
语言
生成
内容
办法
数据
方法
时间
第一次
算法
结果
计算机
妥当
明显
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
皮皮虾数据库会员
电脑怎么登录服务器不留痕迹
金融业网络安全风险防范措施
微信云数据库获取很慢
维护网络安全短视频
数据库集合串讲
华为软件开发岗面试题库
服务器系统电话激活命令
dell服务器 光驱启动
无锡系统软件开发流程
河南软件开发哪家可靠
如何正确的重视网络安全
体检结果用数据库表示
杭州网络安全事故
一流网络安全本科专业建设点
计算机网络技术四个阶段
服务器怎么修改ssh端口
信息与网络技术的灵魂是
重庆机电维修与设备管理软件开发
网络安全的军民融合
如何将应用转换为数据库
榴莲微视软件开发
服务器系统时间不对
云栋网络技术有限公司
软件开发商怎么招聘
云服务器安装jdk
国家网络安全的成就
四川省委 网络安全工作
沈阳靠谱上位机软件开发
软件开发技术路线怎么写