大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说真*伪 随机数[亲测有效],希望您对编程的造诣更进一步.
随机数特点
1 随机性:没有任何顺序
2 不可推测性:无法从已有的数据,推算下一个
3 不可重复性:任何随机数之间不重复
真随机数
- 伴随着物理实验的,比如:抛硬币、掷骰子、电子元件的噪音、核裂变等,它的结果符合三大特性的。
- 具体实现:intel通过电阻和振荡器生成热噪声作为信息熵资源;Unix/Linux的 /dev/random 和 /dev/urandom采用硬件噪音生成随机数
- 优点:真实随机数
- 缺点:需要硬件配合,技术要求高,效率
伪随机数
- 通过一定算法,获得一个随机的值,并不是真的随机。伪随机又分为强伪随机数和弱伪随机数
强伪随机数
- 更加贴近【真随机数】,满足特性的:随机性和不可推测性,难以预测
- 具体实现:java的SecureRandom随机数生成器,就是强伪随机数,因为它内部是使用 击键动作 来作为种子,而击打键盘操作是物理操作,且是不规律的。
弱伪随机数
- 满足随机性,可以预测
- 具体实现:典型的比如java语言里的Random生成器,它是使用时间作为种子(线索)去构造生成器的,假如攻击者获得了构造生成器的时间,那么就可以预测到下一个随机数
总结
-
- 安全系数高、随机性要求高,推荐使用SecureRandom;
-
- 要求不高,使用Random即可;
- 3.说到Random随机数,Collections类下面有一个随机排序算法–shuffle洗牌算法,其内部也是借助random来实现的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7788.html