java随机数random的取值范围(java 随机数生成范围)

  对于Java来说,生成随机数的方式大概有三种,分别是:通过Math类生成、通过Random类生成和通过ThreadLocalRandom类生成。其中Random和ThreadLocalRandom的使用方式几乎一样,只不过两者使用的场景不一样而已,其中ThreadLocalRandom在多线程中效率更好。

image.png

  通过ThreadLocalRandom类生成

  对于ThreadLocalRandom来说,其使用和Random差不多, 区别在于ThreadLocalRandom在多线程环境下,可以更好减少共享资源的竞争。由于ThreadLocalRandom的使用和Random都差不多,这里就展开来说。仅仅提供一个例子演示一下即可。

  通过Math类型生成

  关于Math类,我已经在我的过去的文章中有过介绍,这里就不过多提及。这里只说一个方法,也就是:Math.random()方法。

  对于Math.random()生成的是一个0-1之间的double类型的随机浮点数。

  关于使用Math.random()方法生成随机数的示例代码如下所示:

  public class RandomTest {

  public static void main(String[] args) {

  for (int i = 0; i < 5; i++) {

  System.out.println("第" + i + "次生成的随机数为:" + Math.random());

  }

  }

  }

  例 1

  Math 类的 random() 方法没有参数,它默认会返回大于等于 0.0、小于 1.0 的 double 类型随机数,即 0<=随机数<1.0.对 random() 方法返回的数字稍加处理,即可实现产生任意范围随机数的功能。

  下面使用 random() 方法实现随机生成一个 2~100 偶数的功能。具体代码如下:由于 m+(int)(Math.random()*n) 语句可以获取 m~m+n 的随机数,所以 2+(int)(Math. random()*(102-2)) 表达式可以求出 2~100 的随机数。在产生这个区间的随机数后还需要判断是否为偶数,这里使用了对 2 取余数,如果余数不是零,说明随机数是奇数,此时将随机数加 1 后再输出。

  该程序的运行结果如下:

  随机数是:20

  通过Random类生成

  生成随机数还可以通过Random类来进行生成。对于Random来说,有两个构造器,分别如下:

  public Random():无参构造器,默认使用当前系统时间来计算种子

  public Random(long seed):带参构造器,需自行传入种子。

  因为Random生成的是一个伪随机序列,因此当不同的Random对象的种子相同时,就会产生相同的结果。

  示例代码如下图所示:

  public class RandomTest {

  public static void main(String[] args) {

  Random r1 = new Random(50);

  Random r2 = new Random(50);

  for (int i = 0; i < 5; i++) {

  System.out.println("r1的第" + (i + 1) + "次生成的随机数为:" + r1.nextInt());

  System.out.println("r2的第" + (i + 1) + "次生成的随机数为:" + r2.nextInt());

  }

  }

  }

  例 2

  下面编写一个 Java 程序,演示如何使用 Random 类提供的方法来生成随机数。具体代码如下:本实例每次运行时结果都不相同,这就实现了随机产生数据的功能。该程序的运行结果如下:

  生成的[0.1.0]区间的小数是:0.8773165855918825

  生成的[0.7.0]区间的小数是:6.407083074782282

  生成的[0.10]区间的整数是:5

  生成的[-3.15]区间的整数是:4

  生成一个随机长整型值:-8462847591661221914

  生成一个随机布尔型值:false

  生成一个随机浮点型值:0.6397003

  下期七星彩开奖号码预测:0227168

  使用ThreadLocalRandom的示例代码如下所示:

  public class RandomTest {

  public static void main(String[] args) {

  ThreadLocalRandom random = ThreadLocalRandom.current();

  for (int i = 0; i < 5; i++) {

  System.out.println("第" + (i + 1) + "次获取的随机数为:" + random.nextInt());

  }

  }

  }


发表评论

评论列表

还没有评论,快来说点什么吧~