Java 随机数的获得方法(5种)

这篇具有很好参考价值的文章主要介绍了Java 随机数的获得方法(5种)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. Math.random() 静态方法

产生的随机数是 0 - 1 之间的一个 double,即 0 <= random < 1

代码:

java 获取随机数,沈阳工程学院基础教学,java,开发语言

结果:

java 获取随机数,沈阳工程学院基础教学,java,开发语言

当调用 Math.random() 方法时,自动创建了一个伪随机数生成器,实际上用的是 new java.util.Random()。当接下来继续调用 Math.random() 方法时,就会使用这个新的伪随机数生成器

2. java.util.Random 工具类

基本算法:

linear congruential pseudorandom number generator (LGC) 线性同余法伪随机数生成器

缺点:可预测

Random类默认使用当前系统时钟作为种子:

java 获取随机数,沈阳工程学院基础教学,java,开发语言

Random类提供的方法:API

  • nextBoolean() - 返回均匀分布的 true 或者 false
  • nextBytes(byte[] bytes)
  • nextDouble() - 返回 0.0 到 1.0 之间的均匀分布的 double
  • nextFloat() - 返回 0.0 到 1.0 之间的均匀分布的 float
  • nextGaussian()- 返回 0.0 到 1.0 之间的高斯分布(即正态分布)的 double
  • nextInt() - 返回均匀分布的 int
  • nextInt(int n) - 返回 0 到 n 之间的均匀分布的 int (包括 0,不包括 n)
  • nextLong() - 返回均匀分布的 long
  • setSeed(long seed) - 设置种子

只要种子一样,产生的随机数也一样: 因为种子确定,随机数算法也确定,因此输出是确定的!

3. java.util.concurrent.ThreadLocalRandom 工具类

ThreadLocalRandom 是 JDK 7 之后提供,也是继承至 java.util.Random。每一个线程有一个独立的随机数生成器,用于并发产生随机数,能够解决多个线程发生的竞争争夺。效率更高!

ThreadLocalRandom 不是直接用 new 实例化,而是第一次使用其静态方法 current() 得到 ThreadLocal<ThreadLocalRandom> 实例,然后调用 java.util.Random 类提供的方法获得各种随机数。

java 获取随机数,沈阳工程学院基础教学,java,开发语言

4. java.Security.SecureRandom

也是继承至 java.util.Random。

SecureRandom 提供加密的强随机数生成器 (RNG),要求种子必须是不可预知的,产生非确定性输出。SecureRandom 也提供了与实现无关的算法,因此,调用方(应用程序代码)会请求特定的 RNG 算法并将它传回到该算法的 SecureRandom 对象中。

  • 如果仅指定算法名称,如下所示:SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
  • 如果既指定了算法名称又指定了包提供程序,如下所示:SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");

java 获取随机数,沈阳工程学院基础教学,java,开发语言

5. 随机字符串

java 获取随机数,沈阳工程学院基础教学,java,开发语言

RandomStringUtils 类的实现上也是依赖了 java.util.Random 工具类:

java 获取随机数,沈阳工程学院基础教学,java,开发语言文章来源地址https://www.toymoban.com/news/detail-717055.html

到了这里,关于Java 随机数的获得方法(5种)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java RandomStringUtils随机数工具类

    项目开发中有很多场景需要我们生成一些不重复的字符串,使用UUID是我们经常使用的一种情况,但是UUID的长度比较长,而且长度是不可以自定义的,在实际的使用过程中可能会存在一些不方便的地方,今天我们要介绍的这个工具类,可以自由的配置生成的字符串的长度、字

    2024年02月06日
    浏览(29)
  • java生成指定区间的随机数

    随机数 例:编写程序随机生成k个位于[m,n]区间的整数,对这k个数据进行升序排序并输出。 在使用Java生成随机数的时候,有一些注意事项需要注意,下面是一些常见的问题和解决方案: 1. 生成随机数时,应该使用Java的 Random 类,而不是 Math.random() 方法。原因是, Math.rando

    2024年02月10日
    浏览(31)
  • Java jdk8生成随机数

    目录 Jdk8生成随机数 Jdk8以前 在Java 8中,可以使用ThreadLocalRandom类来生成随机数。相比于早期的Random类,ThreadLocalRandom类可以更好地支持多线程应用,性能也更优。下面是使用ThreadLocalRandom类生成随机数的几种方法: 生成一个0到n之间的随机整数(不包含n): 生成一个范围在

    2024年02月12日
    浏览(32)
  • Java如何生成随机数?要不要了解一下!

    我们在学习 Java 基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍 Java 随机数。 在 Java 中使用 Random 工具类来生成随机数,该类在 java.util 包下,在 JDK1.0 版本就存在了。 Random 单词本身就是随机、随意、任意的意思。 Random 是一个普

    2024年02月06日
    浏览(40)
  • java生成4位不重复的随机数

    2024年02月12日
    浏览(33)
  • Java随机数之System/Random/SecureRandom详解

    本系列为:从零开始学Java,为千锋教育资深Java教学老师独家创作 致力于为大家讲解清晰Java学习相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【点个关注】持续追更~ 文末有本文重点总结!关于技术类问题,也欢迎大家和我们沟通交流! 我们在

    2024年02月06日
    浏览(47)
  • 使用java.security.SecureRandom安全生成随机数和随机字符串工具类

            在Java中,可以使用java.security.SecureRandom和java.util.Random类来生成随机数,但是它们之间有以下区别:         1、随机性强度: SecureRandom 类提供了更高的随机性强度。它使用了更安全的算法和种子生成器,以提供更高质量的随机数。这对于需要高度安全性的应用程

    2024年04月26日
    浏览(32)
  • 【Java代码审计】失效认证及不安全随机数篇

    根据密码学原理,随机数生成器分为以下三类: 1、统计学伪随机数生成器(PRNG):伪随机数生成器从一个初始化的种子值开始计算得到序列,从种子开始,然后从种子中计算出后续值,当种子确定后生成的随机数也是确定的,但其输出结果很容易预测,因此容易复制数值流

    2024年01月16日
    浏览(30)
  • 用Java生成N个不重复的随机数,3种实例

    Java实现生成n个不重复的随机数可以使用Java中的Random类和Set集合来完成 具体代码如下: 上述代码中,使用了一个while循环来生成n个不重复的随机数。在每次循环中,先生成一个范围在1到max之间的随机整数,然后将其加入Set集合中,由于Set集合不允许元素重复,所以会自动去

    2024年02月15日
    浏览(27)
  • Python 获取随机数

    作用:随机生成一个[0,1)之间的浮点数 作用:随机生成[a, b]范围内一个整数 作用:随机生成[a, b]范围内一个整数,如果指定step,step作为步长会进一步限制[a,b]的范围,比如randrange(10, 20, 2)表示生成[10, 20)范围内的随机偶数 作用:产生[a, b]范围内一个随机浮点数 作用:从数组

    2024年02月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包