为什么说Java中的随机数都是伪随机数

Java随机数产生原理:Java的随机数产生是通过线性同余公式产生的,也就是说通过一个复杂的算法生成的。伪随机数的不安全性:Java自带的随机数函数是很容易被黑客破解的,因为黑客可以通过获取一定长度的随机数序列来推出你的seed,然后就可以预测下一个随机数。不用种子的不随机性会增大的原因:java.Math....
为什么说Java中的随机数都是伪随机数
什么是伪随机数?
1.伪随机数是看似随机实质是固定的周期性序列,也就是有规则的随机。
2.只要这个随机数是由确定算法生成的,那就是伪随机,只能通过不断算法优化,使你的随机数更接近随机。
(随机这个属性和算法本身就是矛盾的)
3.通过真实随机事件取得的随机数才是真随机数。

Java随机数产生原理:

Java的随机数产生是通过线性同余公式产生的,也就是说通过一个复杂的算法生成的。
伪随机数的不安全性:

Java自带的随机数函数是很容易被黑客破解的,因为黑客可以通过获取一定长度的随机数序列来推出你的seed,然后就可以预测下一个随机数。

不用种子的不随机性会增大的原因:

java.Math.Random()实际是在内部调用java.util.Random()的,使用一个和当前系统时间有关的数字作为种子数。两个随机数就很可能相同。

double a = Math.random();

double b = Math.random();

Random r1 = new Random();

r1.nextInt(10);

Random r2 = new Random();

r2.nextInt(10);

Java中产生随机数的方法有两种:
第一种:Math.random()
第二种:new Random()

一、java.lang.Math.Random:

调用这个Math.Random()函数能够返回带正号的double值,取值范围是[0.0,1.0),在该范围内(近似)均匀分布。因为返回值是double类型的,小数点后面可以保留15位小数,所以产生相同的可能性非常小,在这一定程度上是随机数。

二、java.util.Random:
Random r1 = new Random();
Random r2 = new Random();

Random r3 = new Random(10);
Random r4 = new Random(10);

下面Random()的两种构造方法:

Random():使用一个和当前系统时间对应的相对时间有关的数字作为种子数。

Random(long seed):直接传入一个种子数。

种子的作用是什么?

种子就是产生随机数的第一次使用值,机制是通过一个函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。以后产生的随机数都与前一个随机数有关。

举例:
Random r =new Random(100);
System.out.println(r.nextInt(20));

种子数只是随机算法的起源数字,和生成的随机数字的区间没有任何关系。

初始化时100并没有起直接作用(注意:不是没有起作用),r.nextInt(20)中的20是随机数的上限,产生的随机数为0-20的整数,不包括20。2017-01-16
mengvlog 阅读 11 次 更新于 2025-07-19 11:37:35 我来答关注问题0
  • 1.伪随机数是看似随机实质是固定的周期性序列,也就是有规则的随机。2.只要这个随机数是由确定算法生成的,那就是伪随机,只能通过不断算法优化,使你的随机数更接近随机。(随机这个属性和算法本身就是矛盾的)3.通过真实随机事件取得的随机数才是真随机数。Java随机数产生原理:Java的随机数产生是通过线性...

  •  百度网友897f8f0804 java 随机数每次系统运行后结果都一样?

    因为你使用了带参数的构造方法,那个参数(1)就是生成随机数的规则,所以每次生成的都是一样的数字,如果想每次的数字都不一样的话可以Random r = new Random(System.currentTimeMillis());或者Random r = new Random();使用无参构造方法,要了解随机数生成规则可以去深入查看源码。

  •  tgwiloveyou java请问为什么每次的随机数都是1?代码错了?

    要求两边都是整数,所以 Math.random()%100 这个就是错误的。另外,(int)(Math.random())%100+1 这样语法正确,返回也是1.

  •  谁用了我双鱼兔 java产生的100个随机数看上去怎么有规律啊

    首先,java的随机数机制是伪随机这是常识。。而且你随机就随机4个数,怎么看怎么都有规律,就是扔骰子都有规律可循。所以说java的随机数这个样子也已经是够用了。不必深究它。。当然。。我对这个原理不是很熟

  •  文暄生活科普 java中random类产生服从标准正态分布的随机数是什么原理?

    Java中随机数生成主要依赖于`java.util.Random`类,使用`Random`类生成服从标准正态分布的随机数涉及数学中的Box-Muller变换原理。该算法的核心在于从均匀分布中生成正态分布的随机数。Box-Muller变换的基本原理是利用两个独立且均值为0、方差为1的均匀随机变量,通过特定的数学变换得到两个独立的标准正态...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部