Class -- 03 -- Random类常用方法详解析

原文链接:Class – 03 – Random类常用方法详解析


相关文章:


这次主要整理下 Java 中 Random 类的常用方法


一、Random 类的定义

  • Random 类位于 java.util 包中,主要用于生成伪随机数

  • Random 类将 种子数 作为随机算法的起源数字,计算生成伪随机数,其与生成的随机数字的区间无关

  • 创建 Random 实例时,若没有指定种子数,则会以当前时间作为种子数,来计算生成伪随机数

  • 拥有相同种子的 Random 实例,在相同次数下,生成的伪随机数完全相同

    Random random1 = new Random(10);
    Random random2 = new Random(10);
    System.out.println(random1.nextInt()); // -1157793070
    System.out.println(random2.nextInt()); // -1157793070
    

二、Random 类的常用方法

  • random.nextBoolean()

    • 用于从该随机数生成器的序列中得到下一个伪均匀分布的 boolean 值

      Random random = new Random();
      System.out.println(random.nextBoolean()); // true
      

  • random.nextBytes()

    • 用于生成随机 byte 值并将其放入用户提供的 byte 数组中

    • 生成的随机 byte 数等于 byte 数组的长度

      Random random = new Random();
      byte[] data = new byte[5];
      random.nextBytes(data);
      System.out.println(Arrays.toString(data)); // [29, 73, -58, -60, -101]
      

  • random.nextDouble()

    • 用于从该随机数生成器的序列中得到下一个伪均匀分布在 0.0 到 1.0 之间的 double 值,[0.0, 1.0)

      Random random = new Random();
      System.out.println(random.nextDouble()); // 0.07169148591770946
      

  • random.nextFloat()

    • 用于从该随机数生成器的序列中得到下一个伪均匀分布在 0.0 到 1.0 之间的 float 值,[0.0, 1.0)

      Random random = new Random();
      System.out.println(random.nextFloat()); // 0.35473615
      

  • random.nextInt()

    • 用于从该随机数生成器的序列中得到下一个伪均匀分布的 int 值

      Random random = new Random();
      System.out.println(random.nextInt()); // 1414623307
      
  • random.nextInt(int bound)

    • 用于从该随机数生成器的序列中得到下一个 0 到结束值之间伪均匀分布的 int 值,[0, 结束值)

      Random random = new Random();
      System.out.println(random.nextInt(10)); // 5
      

  • random.nextGaussian()

    • 用于从该随机数生成器的序列中得到下一个伪均匀分布的 double 值

    • 生成的 double 值符合均值为 0,方差为 1 的正态分布 (高斯分布)

      Random random = new Random();
      System.out.println(random.nextGaussian()); // 0.48039371890232446
      

  • random.setSeed(long seed)

    • 设置随机种子

      Random random = new Random();
      random.setSeed(10);
      

  • random.ints()

    • 用于得到一个有效无限的伪随机 int 值流

      Random random = new Random();
      IntStream ints = random.ints();
      ints.forEach(System.out::println);
      
  • random.ints(long streamSize)

    • 用于得到一个有限长度的伪随机 int 值流

      Random random = new Random();
      IntStream ints = random.ints(5);
      // -673281150 1081958281 -1955726845 133657651 -773829503
      ints.forEach(value -> System.out.print(value + " "));
      
  • random.ints(int randomNumberOrigin, int randomNumberBound)

    • 用于得到一个有效无限的范围在起始值到结束值之间的伪随机 int 值流,[起始值, 结束值)

      Random random = new Random();
      IntStream ints = random.ints(1, 5);
      ints.forEach(System.out::println);
      
  • random.ints(long streamSize, int randomNumberOrigin, int randomNumberBound)

    • 用于得到一个有限长度的范围在起始值到结束值之间的伪随机 int 值流,[起始值, 结束值)

      Random random = new Random();
      IntStream ints = random.ints(5, 1, 5);
      ints.forEach(value -> System.out.print(value + " ")); // 4 2 1 4 1
      

  • random.longs()

    • 用于得到一个有效无限的伪随机 long 值流

      Random random = new Random();
      LongStream longs = random.longs();
      longs.forEach(System.out::println);
      
  • random.longs(long streamSize)

    • 用于得到一个有限长度的伪随机 long 值流

      Random random = new Random();
      LongStream longs = random.longs(5);
      // -4253735830085011397 -81131290106869012 8737071083795249766 2189971428068815599 -6480079951366618766
      longs.forEach(value -> System.out.print(value + " "));
      
  • random.longs(int randomNumberOrigin, int randomNumberBound)

    • 用于得到一个有效无限的范围在起始值到结束值之间的伪随机 long 值流,[起始值, 结束值)

      Random random = new Random();
      LongStream longs = random.longs(1, 5);
      longs.forEach(System.out::println);
      
  • random.longs(long streamSize, int randomNumberOrigin, int randomNumberBound)

    • 用于得到一个有限长度的范围在起始值到结束值之间的伪随机 long 值流,[起始值, 结束值)

      Random random = new Random();
      LongStream longs = random.longs(5, 1, 5);
      longs.forEach(value -> System.out.print(value + " ")); // 1 1 3 1 4 
      

  • random.doubles()

    • 用于得到一个有效无限的伪随机 double 值流

      Random random = new Random();
      DoubleStream doubles = random.doubles();
      doubles.forEach(System.out::println);
      
  • random.doubles(long streamSize)

    • 用于得到一个有限长度的伪随机 double 值流

      Random random = new Random();
      DoubleStream doubles = random.doubles(5);
      // 0.8920930039742779 0.17890662178269223 0.4357034705163628 0.923875379269902 0.935716401915742 
      doubles.forEach(value -> System.out.print(value + " "));
      
  • random.doubles(int randomNumberOrigin, int randomNumberBound)

    • 用于得到一个有效无限的范围在起始值到结束值之间的伪随机 double 值流,[起始值, 结束值)

      Random random = new Random();
      DoubleStream doubles = random.doubles(1, 5);
      doubles.forEach(System.out::println);
      
  • random.doubles(long streamSize, int randomNumberOrigin, int randomNumberBound)

    • 用于得到一个有限长度的范围在起始值到结束值之间的伪随机 double 值流,[起始值, 结束值)

      Random random = new Random();
      DoubleStream doubles = random.doubles(5, 1, 5);
      // 1.3129824412519966 3.844270928219007 2.2465511715951845 3.2396684494598116 3.5435450122721313 
      doubles.forEach(value -> System.out.print(value + " "));
      
  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值