1楼:匿名用户
什么是伪随机数?
1.伪随机数是看似随机实质是固定的周期性序列,也就是有规则的随机。
2.只要这个随机数是由确定算法生成的,那就是伪随机,只能通过不断算法优化,使你的随机数更接近随机。
(随机这个属性和算法本身就是矛盾的)
3.通过真实随机事件取得的随机数才是真随机数。
java随机数产生原理:
java的随机数产生是通过线性同余公式产生的,也就是说通过一个复杂的算法生成的。
为什么说java中的随机数都是伪随机数
2楼:百毒千毒
声明下:以下是我复制的,我本人也算是涨知识了.噪声厉害了我的哥!
1.只要是通过算法产生的随机数都是伪随机数。
2.通过真实随机事件取得的随机数才是真随机数。
3.linux和windows 系统都有自带的真随机数函数,它们是通过外部噪音来实现的,如,敲击键盘的时间间隔,特定的中断等。
4.像编程语言自带的随机数函数是很容易被黑客破解的5.例如:
java的随机数产生是通过去模运算产生的,黑客只需要知道连续的2个随机数就可以**下一个随机数。python 采用的是mt算法,破解难度要稍微比java 难一些!
3楼:匿名用户
因为java中的随机数是为随机数
为什么说java中的随机数都是伪随机数
4楼:蔡新
什么是伪随机数?
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。
java里的伪随机数的概念?
5楼:千锋教育
/**random:产生随机数的类
**构造方法:
* publicrandom():没有给种子,用的是默认种子,是当前时间的毫秒值
* publicrandom(longseed):给出指定的种子
** 给定种子后,每次得到的随机数是相同的。
**成员方法:
* publicintnextint():返回的是int范围内的随机数
* publicintnextint(intn):返回的是[0,n)范围的内随机数*/
6楼:匿名用户
首先要说的是,什么叫伪随机数.计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。
计算机只能生成相对的随机数,即伪随机数。伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。
补:大哥.这是原话.但已经很白话了?还要怎么样你才能听明白?认识字的应该都能懂了.意思就是:世界上没有绝对的事情.什么事都是相对的.ok?
rand()函数产生的随机数为什么是伪随机数
7楼:匿名用户
计算机的运行过程是一个
确定的过程,每一条指令都是确定,因此从根本上来讲,计算机产生不了真正意义上的随机数。
那么伪随机数怎么理解呢?举个最简单的例子,要随机产生0~9十个数,那么计算机可以循环快速的给出0、1、2、3、4、5、6、7、8、9、0、1……这样的一个数列,这个数列并不是随机的,而是有规律的(所以才叫做伪随机),当我们按下按钮,或者点下鼠标的瞬间,机器停止,并显示最后的一个数字(有点类似于玩***),这个过程我们挑选出来的数字好像是随机的,但其实并不是100%随机,只有我们去触发机器的那个时间点是随机的,其他都是有规律的,所以就是伪随机。
rand()函数就是给出一列数值(这列数值是被事先打乱,但是是固定的数值),所以属于伪随机数。只是机器执行到rand()函数的时间点是随机的,才让我们感觉执行结果是随机的一样。
rand函数产生的随机数为什么是伪随机数
1楼 匿名用户 计算机的运行过程是一个 确定的过程,每一条指令都是确定,因此从根本上来讲,计算机产生不了真正意义上的随机数。 那么伪随机数怎么理解呢?举个最简单的例子,要随机产生0 9十个数,那么计算机可以循环快速的给出0 1 2 3 4 5 6 7 8 9 0 1 这样的一个数列,这个数列并不是随...
伪随机数如何能寻找到规律,Java里的伪随机数的概念?
1楼 清风无真汝 可以啊,小意思。用极坐标系就ok了。 一般的随机是垂直坐标系上的x y的均布,把x y换成极坐标系里面的角度和半径,得到点的x y值就是非均布的了。 算法思路是这样的,怎么实现10以下80 我就懒得细想了。 2楼 无论如何,都应该知道种子,然后用这个种子得到一个伪随机序列,下一次,...
随机数生成器用的是什么原理,随机数生成器原理
1楼 匿名用户 1970年的资料是用串行位移寄存器,反馈输入叠加 随机数生成器原理 2楼 匿名用户 不懂。。。。鉴定完毕。。。 问比尔盖次 3楼 匿名用户 这个要问数学老师 随机数表到处都有 原理就是随鸡选几个拉 电脑取随机数是什么原理,是真正的随机数吗 4楼 匿名用户 首先, 真随机 也有不同的含...