数组是一种常用的数据结构,将数据存储在连续的内存中。在这篇文章中,你将了解在Java中用随机数填充数组的不同方法。
我们将使用不同的库方法生成随机数,如Java Utility库的Random 类、Java的Math 类和Apache Commons库。
在Java中用随机类向数组中填充随机数
Java实用程序库中的Random 类提供了一堆可以生成随机数的方法。
不同的方法可以生成不同数据类型的随机数。如果你想在一个范围内生成随机数,你可以使用不同的多态形式。
然而,在这篇文章中,我们将用整数数据类型范围内的数字填充一个整数数组。因此,我们不会对随机数施加任何限制。
使用nextInt()方法向数组中填充随机数
随机类中的nextInt() 方法返回int 数据类型范围内的伪随机整数。这些数字是以一种近乎均匀的分布方式生成的。
nextInt() 方法在随机类中的定义如下所示。
public int nextInt()
要用nextInt() 方法将随机数填充到数组中。
- 声明并实例化一个任意大小的整数数组。
- 声明并实例化一个随机类的对象。
- 迭代数组并调用
nextInt()方法。- 将返回的值分配给当前数组的位置。
让我们看看这段代码。
package java2blog;
import java.util.Random;
public class FillArrayExample {
public static void main(String\[\] args)
{
int \[\] rArr = new int\[6\];
Random rClass = new Random();
for(int i=0;i
输出。
随机填充的数组元素是:
384255672 -174688078 483929535 731995201 254320427 1094589344
注意,数组中存在非常大的数字以及负数。如果你想产生一个范围内的数字,你可以查看nextInt() 方法的其他多态形式和这里的其他方法。
使用ints()方法向数组中填充随机数
与每次产生一个数字的nextInt() 方法不同,ints() 方法产生一个伪随机数流。这些数字是均匀分布的。
ints() 方法是在随机类中定义的,如下所示。
public IntStream ints()
注意,该方法返回一个IntStream 对象而不是一个整数。
你可以按照给定的步骤使用这个方法来填充数组。
-
声明并实例化一个任意大小的整数数组。
-
声明并实例化一个随机类的对象。
-
使用随机类实例调用
ints()方法,它将返回一个IntStream类对象。- 调用
IntStream类的limit()方法,从无限流中提取与数组大小相等的数字。 - 调用
toArray()方法,将数据流转换为数组。
- 调用
让我们看看这段代码。
package java2blog;
import java.util.Random;
public class FillArrayExample {
public static void main(String\[\] args)
{
int \[\] rArr = new int\[6\];
Random rClass = new Random();
rArr = rClass.ints().limit(rArr.length).toArray();
System.out.println("Randomly filled array elements are:");
for(int i=0;i
输出。
随机填充的数组元素是:
2062421650 -2049005340 -1399535828 -425229654 190823518 55983318
你可以在这里查看ints() 方法的其他多态性。
使用Apache Commons库在Java中用随机数填充数组
Apache Commons库是一个第三方开源的Java库。它有RandomUtils 类,你可以用它来产生伪随机数。
你需要在pom.xml 中添加以下依赖关系来获得Apache commons jar。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
不同的方法可以用来生成不同数据类型的数字。你可以使用nextInt() 方法来产生随机的整数。
下面给出了Apache Commons库的nextInt() 方法的定义。
public static int nextInt()
该方法返回一个正整数,包括int 数据类型范围内的零。
这个方法的工作原理类似于Random类的nextInt() 方法,只是你不需要实例化该类对象。它是一个静态方法,所以可以用类的名称来调用它。
让我们来看看代码。
package java2blog;
import org.apache.commons.lang3.RandomUtils;
public class FillArrayExample {
public static void main(String\[\] args)
{
int \[\] rArr = new int\[6\];
for(int i=0;i
输出。
随机填充的数组元素是:
1653009679 1873237419 1198525296 1224407261 1608351756 612826226
对于nextInt() 方法的其他多态形式,可以产生给定范围内的数字和其他产生随机数的方法,你可以访问这个页面。
在Java中使用Java数学类用随机数填充数组
JavaMath 类有一个random() 方法,可以返回 0.0(包括)到 1.0(不包括)之间的伪随机double 数。
该随机方法定义在Math 类中,如下所示。
public static double random()
你可以使用random() 方法用随机数来填充你的数组。然而,如果你想要整数,你应该明确地将这些数字转换为整数数据类型。
在铸造之前,确保你将数字与一个大的整数相乘,这样你就可以降低得到重复数字的概率。
你可以使用Math 类,按照给定的步骤用随机数填充整数阵列。
-
声明并实例化一个整数数组。
-
遍历数组。
- 通过调用
Math.random()方法生成一个双数。 - 将结果与一个大的整数相乘。这里给出的代码将数字与
1e6相乘。 - 将结果转换为
int数据类型,并将其存储到数组中。
- 通过调用
让我们来看看这段代码。
package java2blog;
public class FillArrayExample {
public static void main(String\[\] args)
{
int \[\] rArr = new int\[6\];
for(int i=0;i
输出。
随机填充的数组元素是:
797056 217515 694273 810260 308203 952512
在并发环境下用Java中的随机数填充数组
Java提供了一个特殊的类来在并发环境下产生随机数。
ThreadLocalRandom 类是随机类的一个子类,在并发环境中可以提高性能。
这个类的nextInt() 方法与随机类的nextInt() 方法类似。你可以采取以下步骤,用随机数填充数组。
-
声明并实例化该数组。
-
遍历数组。
- 使用静态的
current()方法为当前线程获取该类的实例。 - 调用
nextInt()方法,将数字分配给当前数组元素。
- 使用静态的
让我们看看这段代码。
package java2blog;
import java.util.concurrent.ThreadLocalRandom;
public class FillArrayExample {
public static void main(String[] args)
{
int [] rArr = new int[6];
for(int i=0;i<rArr.length;i++)
{
int num = ThreadLocalRandom.current().nextInt();
rArr[i] = num;
}
System.out.println("Randomly filled array elements are:");
for(int i=0;i<rArr.length;i++)
{
System.out.print(rArr[i]+" ");
}
}
}
输出。
随机填充的数组元素是:
1069164748 -622761547 1121608439 73889954 2082012432 493374267
你可以在这里阅读关于这个类的更多方法。
总结
这篇文章向你展示了在Java中用随机数填充数组的三种不同方法。
其他方法是线程安全的,但它们在并发环境中的性能会有所下降。因此,你应该在并发环境中使用ThreadLocalRandom 类。
尽管所有的方法都很有用,但使用ints() 是最简单的,因为它只需一行代码就能完成工作。
如果你需要在一个给定的范围内生成数字,你可以在这里阅读我们的另一篇文章。
希望你喜欢这篇文章。请继续关注更多的文章。学习愉快!