常用类-java.util.Random

常用类-java.util.Random

  • public class Random
    extends Object
    implements Serializable
    
  • 该类的实例用于生成伪随机数的流。 该类使用48位种子,其使用线性同余公式进行修改。

  • 如果使用相同的种子创建两个Random Random ,并且对每个实例进行相同的方法调用序列,则它们将生成并返回相同的数字序列。

  • java.util.Random的java.util.Random是线程安全的。 但是,跨线程的同时使用java.util.Random实例可能会遇到争用,从而导致性能下降。 在多线程设计中考虑使用ThreadLocalRandom

  • java.util.Random的java.util.Random不是加密安全的。 考虑使用SecureRandom获取一个加密安全的伪随机数生成器,供安全敏感应用程序使用。

构造方法:

    • Constructor and Description
      Random() 创建一个新的随机数生成器。
      Random(long seed) 使用单个 long种子创建一个新的随机数生成器。

实验:设置随机数种子的作用

@Test
public void test002() {
    long seed = 123;
    Random random = new Random(seed);
    int i1 = random.nextInt();//随机产生一个int类型的值
    int i2 = random.nextInt();
    int i3 = random.nextInt();
    System.out.println(i1);
    System.out.println(i2);
    System.out.println(i3);
    System.out.println("==============================");
    Random random1 = new Random();
    random1.setSeed(seed);
    int j1 = random.nextInt();
    int j2 = random.nextInt();
    int j3 = random.nextInt();
    System.out.println(j1);
    System.out.println(j2);
    System.out.println(j3);
}
第一次运行结果:
-1188957731
1018954901
-39088943
==============================
1295249578
1087885590
-1829099982

第二次运行结果:
-1188957731
1018954901
-39088943
==============================
1295249578
1087885590
-1829099982

结果:给Random对象设置了随机数种子可以使得这个对象多次运行时产生的随机数固定,但是同一对象一次运行中多次调用方法还是随机的。

常用方法:

    • booleannextBoolean() 返回下一个伪随机数,从这个随机数发生器的序列中均匀分布 boolean值。
      voidnextBytes(byte[] bytes) 生成随机字节并将它们放入用户提供的字节数组中。
      doublenextDouble() 返回下一个伪随机数,从这个随机数发生器的序列中 0.01.0之间的 double0.0分布。
      floatnextFloat() 返回下一个伪随机数,从这个随机数发生器的序列中 0.01.0之间的 float0.0分布。
      doublenextGaussian() 从该随机数发生器的序列返回下一个伪随机数,高斯(“正”)分布 double值,平均值为 0.0 ,标准差为 1.0
      intnextInt() 返回下一个伪随机数,从这个随机数发生器的序列中均匀分布 int值。
      intnextInt(int bound) 返回伪随机的,均匀分布 int值介于0(含)和指定值(不包括),从该随机数生成器的序列绘制。
      longnextLong() 返回下一个伪,均匀分布 long从这个随机数生成器的序列值。
      voidsetSeed(long seed) 使用单个 long种子设置该随机数生成器的种子。

扩展:Random产生的随机数都是等概率的

验证:

@Test
public void test003() {
    Random random = new Random();
    int[] arr = new int[5];//每个元素的值代表出现随机数为下标的次数
    //例如:1出现的次数为100次,那么a[1] = 100
    int ran = 0;
    for (int i = 0; i < 1000000; i++) {
        ran = random.nextInt(5);//随机产生0-4的整数
        arr[ran]+=1;
    }
    for (int i = 0; i < 5; i++) {
        System.out.println(i + "出现的概率:" + (double)arr[i]/1000000);
    }
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.util.RandomJava中的一个,用于生成伪随机数流。它有两个构造方法,一个是无参构造方法Random(),用于创建一个新的随机数生成器;另一个是带有一个long型参数的构造方法Random(long seed),使用指定的种子创建一个新的随机数生成器。\[1\] Random常用的方法有: - nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int值。 - nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在0(包括)和指定值(不包括)之间均匀分布的int值。 - nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0(包括)和1.0(不包括)之间均匀分布的double值。 - nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0,标准差是1.0。 - nextBytes(byte\[\] bytes):生成随机字节并将其放入指定的字节数组中。 通过使用Random的实例,我们可以方便地生成各种型的伪随机数,以满足不同的需求。 #### 引用[.reference_title] - *1* [java.util Random](https://blog.csdn.net/alnzm80680/article/details/102022917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值