迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

在 Java 中生成 0 和 1 之间的随机双精度值

作者:迹忆客 最近更新:2023/11/28 浏览次数:

本文将介绍三种方法来生成原始类型 double 的 0 到 1 之间的随机值。为了证明生成值的随机性,我们将使用循环生成 0 到 1 之间的十个随机双精度值。


在 Java 中使用 Math.random() 生成 0 和 1 之间的随机双精度值

Math 类可用于执行各种数学运算。我们也可以使用这个类来生成随机数。Math.random() 是返回 0 到 1 之间随机数的静态函数。这里,0 包含生成的值,而 1 始终不包含。

在以下示例中,我们使用 Math.random() 生成 double 类型的随机值。在输出中,我们可以看到这些值都是随机的。

public class RandomDouble {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      double randomDbl = Math.random();

      System.out.println(randomDbl);
    }
  }
}

输出:

0.9537872648347154
0.2863804438195172
0.5815339629441948
0.7734677312115609
0.021051510563543485
0.9064133490694901
0.6833468691871607
0.30655711217738246
0.2730784326888416
0.6804778782692341

在 Java 中使用 Random().nextDouble() 生成 0 和 1 之间的随机双精度值

另一种可以生成 0 到 1 之间随机数的方法是 nextDouble(),它是 java.util.Random 类的一部分。当我们使用 Random 类的对象调用 nextDouble() 时,它返回一个介于 0 和 1 之间的随机值,就像我们在前面的示例中看到的那样。

据说这种方法比 Math.random() 更有效。

import java.util.Random;

public class RandomDouble {
  public static void main(String[] args) {
    Random randomObj = new Random();

    for (int i = 0; i < 10; i++) {
      double randomDbl = randomObj.nextDouble();

      System.out.println(randomDbl);
    }
  }
}

输出:

0.240017494934622
0.08331956619499614
0.4359524465181911
0.5291811081068774
0.38193057731688373
0.6969527822622924
0.5436002348156281
0.32176862575520415
0.07327708002828293
0.9005635171231344

在 Java 中使用 ThreadLocalRandom.current().nextDouble() 生成 0 和 1 之间的随机双精度值

我们在本教程中看到的两种技术对于多线程系统效率不高,可能会导致性能不佳。这是因为当我们使用 Random 类生成随机数时,所有线程共享同一个实例,这意味着当一个线程发生变化时,所有其他线程也会被执行。

为了解决这个问题,Java 在 JDK 7 更新中引入了 ThreadLocalRandom。它是一个只在当前线程上运行的类,从而在多线程环境中获得更好的性能。

在下面的示例中,我们调用 nextDouble(),它使用 ThreadLocalRandom.current() 生成双随机值,它返回一个随机生成的介于 0 和 1 之间的双精度值。

import java.util.concurrent.ThreadLocalRandom;

public class RandomDouble {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      double randomDbl = ThreadLocalRandom.current().nextDouble();

      System.out.println(randomDbl);
    }
  }
}

输出:

0.9717084711770174
0.8977374014983726
0.2744375247405819
0.2866498720386894
0.6118970047667582
0.7441044456568308
0.21043457873690274
0.08985457420563114
0.86748682220748
0.18952106607144148

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便