在 Java 中生成 0 和 1 之间的随机双精度值
本文将介绍三种方法来生成原始类型 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
相关文章
Java 中的类字段和实例字段
发布时间:2023/11/28 浏览次数:97 分类:Java
-
在本文中,你将学习一些 Java 术语,它们是局部变量、输入参数、类字段和实例字段。我们还将讨论 Java 中实例字段的一些属性。
Java 中的类文件编辑器
发布时间:2023/11/28 浏览次数:192 分类:Java
-
本文展示了如何使用 Java 类文件来编辑类文件。在本文中,我们将讨论 Java 类文件编辑器,这是一个用 Java 创建的工具,用于编辑 Java 编译的类。我们可以在创建 Java 类后对其进行反编译并查看
Java 中的_JAVA_OPTIONS 环境变量
发布时间:2023/11/28 浏览次数:166 分类:Java
-
在本文中,我们将讨论 Java 选项和 _JAVA_OPTIONS 环境变量,它的后续 JAVA_TOOL_OPTIONS 和 JDK_JAVA_OPTIONS。
如何在 Java 中清除控制台
发布时间:2023/11/28 浏览次数:125 分类:Java
-
它展示了在 Java 中清理控制台屏幕的两种方法。在本教程中,我们将看一下在 Java 中清理控制台屏幕的两种方法。我们将通过实例来学习如何在运行时执行 Java 清屏命令。
如何在 Java 中从控制台获取输入
发布时间:2023/11/28 浏览次数:163 分类:Java
-
本教程展示了 Scanner 类中包含的读取控制台输入的各种功能。在本教程中,我们将查看 Java 中的 Scanner 类,并学习如何使用该类从控制台读取输入。Scanner 类来自于 Java 包 java.util.Scanner。
Java 中的 console.log
发布时间:2023/11/28 浏览次数:174 分类:Java
-
本文介绍 Java 中的 console.log。本教程介绍 Java 中的 console.log() 函数以及如何在 Java 中将日志显示到控制台。console.log() 是 JavaScript 的一个函数,用于向浏览器控制台显示日志消息。
Java 更改日期格式
发布时间:2023/11/28 浏览次数:166 分类:Java
-
本文介绍如何在 Java 中更改日期格式 有多种选项可用于将日期字符串转换为日期格式。下面提到的方法可以带来所需的结果。让我们从下面的代码块中了解各种方式。
Java 中 YYYY-MM-DD 格式的日历日期
发布时间:2023/11/28 浏览次数:157 分类:Java
-
本文讨论了我们可以在 Java 中将日历日期转换为 YYYY-MM-DD 格式的各种方法。Java Date 封装了当前时间和日期。日期类在两个构造函数的帮助下做到这一点 - Date() 和 Date(long millisec) 构造函数。
在 Java 中实现最小最大堆
发布时间:2023/11/28 浏览次数:50 分类:Java
-
本文介绍如何在 Java 中实现最小最大堆 本文将使用 PriorityQueue 类实现一个最大堆和一个最小堆。我们还将演示从堆中插入和删除元素。