java根据种子生成固定值_java固定种子随机数预测

听说java随机数是伪随机就是通过一个种子进行运算得出,既然这样那么应该可以通过随机数再次得到种子,通过种子再次得到接下来的所有随机数。

首先看下随机数的生成,随机数生成一个是带种子一个是不带种子,不带种子的默认用seedUniquifier() ^ System.nanoTime() 作为种子,seedUniquifier()是一个线性值可预测

唯一预测起来比较麻烦的是System.nanoTime() =23429979025971 类似于这样的一个电脑纳秒值,再加上cpu的运算几乎算是随机的了,如果是带种子的话那么随机数就可以预测了。

之前在网上找随机数逆向算法没找到所以就自己研究了下,现在写成文章以免日后自己忘记了可以通过文章快速上手,其次也给各位一个参考,代码未格式化和整理的第一手代码,如果整理了我怕我以后上手麻烦。什么线性同余算法什么梅森算法完全看不懂,就是按照一个随机数然后逆向算出种子然后在随机出接下来的随机数。

/**/

for (long i = 23429979025971L; i <= 23429979025971L; i++) {

Random random=new Random(i,i);

for (int j = 1; j <= 5; j++) {

Double d=random.nextDouble();

//if((d)==0.9943732600499389){

System.out.println(i+”->”+j+”->”+System.currentTimeMillis()+”->”+d);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值