在Java中用随机数填充数组

583 阅读7分钟

数组是一种常用的数据结构,将数据存储在连续的内存中。在这篇文章中,你将了解在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() 是最简单的,因为它只需一行代码就能完成工作。

如果你需要在一个给定的范围内生成数字,你可以在这里阅读我们的另一篇文章。

希望你喜欢这篇文章。请继续关注更多的文章。学习愉快!