Java从n个数中随机选m个数

在Java编程中,有时我们需要从给定的n个数中随机选取m个数。这种需求在很多应用中都是常见的,比如抽奖、随机生成测试数据等。本文将介绍如何使用Java代码实现从n个数中随机选m个数的功能。

方法一:使用ArrayList

一种简单的方法是使用ArrayList类来实现。首先,我们可以将n个数存储在一个ArrayList对象中。然后,我们可以使用Collections.shuffle()方法来打乱列表中的元素顺序,以达到随机选取的目的。接下来,我们可以从打乱后的列表中取出前m个元素作为选取的结果。

下面是使用ArrayList实现的示例代码:

import java.util.ArrayList;
import java.util.Collections;

public class RandomSelection {
    public static void main(String[] args) {
        int n = 10; // 总共有10个数
        int m = 5; // 选取其中的5个数

        // 初始化列表
        ArrayList<Integer> numbers = new ArrayList<>();
        for (int i = 1; i <= n; i++) {
            numbers.add(i);
        }

        // 打乱列表中的元素顺序
        Collections.shuffle(numbers);

        // 取出前m个元素作为选取的结果
        ArrayList<Integer> selectedNumbers = new ArrayList<>();
        for (int i = 0; i < m; i++) {
            selectedNumbers.add(numbers.get(i));
        }

        // 输出结果
        System.out.println("选取的数为:");
        for (int number : selectedNumbers) {
            System.out.print(number + " ");
        }
    }
}

上述代码中,我们首先定义了n和m的值,然后初始化一个ArrayList对象并添加n个元素。接下来,我们使用Collections.shuffle()方法打乱列表中的元素顺序。最后,我们从打乱后的列表中取出前m个元素,并将其存储在另一个ArrayList对象中。通过遍历这个对象,我们可以输出选取的结果。

方法二:使用数组

除了使用ArrayList,我们还可以使用数组来实现从n个数中随机选m个数的功能。这种方法比较直接,不需要使用集合类。

下面是使用数组实现的示例代码:

import java.util.Random;

public class RandomSelection {
    public static void main(String[] args) {
        int n = 10; // 总共有10个数
        int m = 5; // 选取其中的5个数

        // 初始化数组
        int[] numbers = new int[n];
        for (int i = 0; i < n; i++) {
            numbers[i] = i + 1;
        }

        // 随机选取m个数
        Random random = new Random();
        for (int i = 0; i < m; i++) {
            int index = random.nextInt(n - i) + i;
            int temp = numbers[index];
            numbers[index] = numbers[i];
            numbers[i] = temp;
        }

        // 输出结果
        System.out.println("选取的数为:");
        for (int i = 0; i < m; i++) {
            System.out.print(numbers[i] + " ");
        }
    }
}

上述代码中,我们首先定义了n和m的值,然后初始化一个数组并添加n个元素。接下来,我们使用Random类生成一个随机数,然后将选取的数与数组中的第一个数交换位置。然后,我们再次生成一个随机数,将选取的数与数组中的第二个数交换位置,以此类推。最后,我们遍历数组的前m个元素,输出选取的结果。

总结

本文介绍了两种常见的方法来实现从n个数中随机选m个数的功能。无论是使用ArrayList还是使用数组,我们都可以轻松实现这一功能,并且代码也相对简单。在实际应用中,我们可以根据具体需求选择适合的方法。

::: journey title: 从n个数中随机选m个数的旅程 sections: - 初始化列表或数组 - 打乱顺序或交换位置 - 选取m个数作为结果 :::

sequenceDiagram
    participant User