java随机数函数_java随机函数详解
本⽂主要介绍java⾥的⼀些随机函数实现与⽤法,也会附带介绍⼀些随机数知识。
⽬前计算机实现的随机函数过程中,都是伪随机的,不过,可以实现统计学意义上的随机。⽐如⼿机⿏标移动位置,点击,系统的参数等等作为种⼦,这种随机统计上看起来就是“真随机数”了,具有较⾼的安全性。当然对于多线程,仍然需要做⼀些讨论。
关键字:随机数,java,伪随机数,种⼦, SecureRandom
1、分类
随机数被准确地分成了三类:真随机数、准随机数、伪随机数。那么这三种的区别是什么呢?书上的定义:java生成随机数的方法
1)真随机数 :产⽣的数不可预计,也不可能重复产⽣两个相同的真随机数序列。真随机数只能通过某些随机的物理过程来产⽣,如放射性衰变、电⼦设备的热噪声等。java⾥将⼀些不可测的因素引⼊,收集计算机的各种信息,如键盘输⼊时间,CPU时钟,内存使⽤状态,硬盘空闲空间,IO延时,进程数量,线程数量等信息,来得到⼀个近似随机的种⼦。我们暂且将这种随机数称为真随机。⽐如linux⾥
的/dev/random(会产⽣阻塞)与/dev/urandom(不会产⽣阻塞)
2)准随机数:其随机数序列不具备随机性质,仅仅是⽤它来处理问题能够得到正确的结果。分布相对于伪随机数更为均匀。(参考本⽂底部[2],[3])
3)伪随机数:通过某种数学公式或者算法产⽣的数值序列。虽然在数学意义上伪随机数是不随机的,但是如果能够通过统计检验,可以当成真随机数使⽤。
本⽂讨论的都是伪随机数和真随机数。伪随机数⽣成器被称为PRNG(Pseudo-random number generato
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论