专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

java随机数怎么生成,java随机数生成的4种方法

来源:小易整编  作者:小易  发布时间:2023-02-24 04:03
摘要:java随机数怎么生成,java随机数生成的4种方法在Java中,生成随机数的场景有很多,所以本文我们就来盘点一下4种生成随机数的方式,以及它们之间的区别和每种生成方式所对应的场景。RandomRandom类诞生于JDK1.0,它产生的随机...

以上程序的执行结果为:

java随机数怎么生成,java随机数生成的4种方法

SecureRandom 默认支持两种加密算法:

  1. SHA1PRNG 算法,提供者 sun.security.provider.SecureRandom;
  2. NativePRNG 算法,提供者 sun.security.provider.NativePRNG。

当然除了上述的操作方式之外,你还可以选择使用 new SecureRandom() 来创建 SecureRandom 对象,实现代码如下:

SecureRandom secureRandom = new SecureRandom();

通过 new 初始化 SecureRandom,默认会使用 NativePRNG 算法来生成随机数,但是也可以配置 JVM 启动参数“-Djava.security”参数来修改生成随机数的算法,或选择使用 getInstance("算法名称") 的方式来指定生成随机数的算法。

Math

Math 类诞生于 JDK 1.0,它里面包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数,当然它里面也包含了生成随机数的静态方法 Math.random() ,此方法会产生一个 0 到 1 的 double 值,如下代码所示。

① 基础使用

for (int i = 0; i < 10; i++) {    // 产生随机数    double number = Math.random();    System.out.println("生成随机数:" + number);}

以上程序的执行结果为:

java随机数怎么生成,java随机数生成的4种方法

② 扩展

当然如果你想用它来生成一个一定范围的 int 值也是可以的,你可以这样写:

for (int i = 0; i < 10; i++) {    // 生成一个从 0-99 的整数    int number = (int) (Math.random() * 100);    System.out.println("生成随机数:" + number);}

以上程序的执行结果为:

java随机数怎么生成,java随机数生成的4种方法

③ 实现原理

通过分析 Math 的源码我们可以得知:当第一次调用 Math.random() 方法时,自动创建了一个伪随机数生成器,实际上用的是 new java.util.Random(),当下一次继续调用 Math.random() 方法时,就会使用这个新的伪随机数生成器。

源码如下:

public static double random() {    return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();} privatestaticfinalclass RandomNumberGeneratorHolder {    staticfinal Random randomNumberGenerator = new Random();}

总结

本文我们介绍了 4 种生成随机数的方法,其中 Math 是对 Random 的封装,所以二者比较类似。Random 生成的是伪随机数,是以当前纳秒时间作为种子数的,并且在多线程竞争比较激烈的情况下因为要进行 CAS 操作,所以存在一定的性能问题,但对于绝大数应用场景来说,使用 Random 已经足够了。当在竞争比较激烈的场景下可以使用 ThreadLocalRandom 来替代 Random,但如果对安全性要求比较高的情况下,可以使用 SecureRandom 来生成随机数,因为 SecureRandom 会收集一些随机事件来作为随机种子,所以 SecureRandom 可以看作是生成真正随机数的一个工具类。


本文地址:百科问答频道 https://www.neebe.cn/wenda/903352_3.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!

共3页 1 2 3 当前是最后一页

百科问答
小编:小易整编
相关文章相关阅读
  • 用java开发的游戏有哪些 java架构开发的游戏推荐2023

    用java开发的游戏有哪些 java架构开发的游戏推荐2023

    java是一种非常实用的计算机语言,正因如此也把它使用在了游戏设计中,那么用java开发的游戏有哪些呢?本期小编就将带各位小伙伴了解一下相关的内容,这项有用的技术被应用到各种不同种类的游戏制作和设计中,增加了游戏的体验感,这些游戏都具有自己...

  • 如何安装java,java安装教程

    如何安装java,java安装教程

    如何安装java,java安装教程一·下载JAVA安装包并安装1.首先去官网下载JAVA安装包,JAVA安装包下载地址:https://www.oracle点com/technetwork/java/javase/downloads/ind...

  • classpath环境变量作用,Java环境变量classpath的作用

    classpath环境变量作用,Java环境变量classpath的作用

    classpath环境变量作用,Java环境变量classpath的作用环境变量环境变量(environmentvariables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操...

  • 如何数组合并,JavaScript合并数组的三种方法

    如何数组合并,JavaScript合并数组的三种方法

    如何数组合并,JavaScript合并数组的三种方法数组作为一种数据结构,表示索引项的有序集合。经常会使用到数组,尤其是将多个数组进行合并,比如将数组[1,2,3]和数组[4,5,6]合并,最终得到数组[1,2,3,4,5,6]。数组的合并...

  • 怎么解析xml文件,java解析xml文件的几种方式

    怎么解析xml文件,java解析xml文件的几种方式

    怎么解析xml文件,java解析xml文件的几种方式一、为什么使用xml文件便于不同应用程序之间通信。便于不同平台之间通信。便于不同平台之间数据共享。二、读取xml的方式xml测试文件内容如下:

  • 回到顶部如何实现,JavaScript实现回到顶部功能的五种方法

    回到顶部如何实现,JavaScript实现回到顶部功能的五种方法

    回到顶部如何实现,JavaScript实现回到顶部功能的五种方法回到顶部的功能现在基本上是网页的标配了,当你已经浏览到页面底部时,一键返回顶部的功能确实非常方便。随着用户习惯的养成,这个功能都是页面必备的。那么作为一个前端开发者,我们如何实...

  • java虚拟机是什么,深入理解java虚拟机

    java虚拟机是什么,深入理解java虚拟机

    java虚拟机是什么,深入理解java虚拟机文章目录一、Java虚拟机是什么二、为什么需要了解Java虚拟机三、JavaJDK的迭代历史四、Java虚拟机发展史与种类五、Java虚拟机规范六、Java虚拟机语言无关性七、Java虚拟机的组成...

  • java入门基础知识,java入门教程【0基础自学】

    java入门基础知识,java入门教程【0基础自学】

    java入门基础知识,java入门教程源代码组织方式Java程序由package+class组成,package对应目录的相对路径,class对应文件,如E:\Workspaces\MyEclipse10\JavaStudy\src\com...

  • 周排行
  • 月排行
  • 年排行

精彩推荐