首页  >  文章  >  Java  >  Java 中的 Shuffle()

Java 中的 Shuffle()

PHPz
PHPz原创
2024-08-30 15:36:36946浏览

Java 有许多内置函数可以对集合或其他数据类型执行不同的操作,其中之一就是 shuffle。 Shuffle 函数在 Python 等许多其他语言中都可用。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

  • shuffle函数用于对集合元素进行洗牌。
  • 它随机排列参数中传递的列表元素。
  • Java 中的 shuffle 有两种方法,一种是使用 collections shuffle 方法,另一种是使用 random class。
  • 集合shuffle函数也可以通过两种方式调用,一种是带random参数来指定随机性,另一种是不带参数。
  • 随机播放()
  • 随机播放(, )
  • 您需要传递列表,以便我们将数组转换为列表,然后将其传递给集合。shuffle 并再次将结果转换为数组。

Java 中 Shuffle() 的语法

随机播放方法声明:

public static void shuffle(List<?> list)
public static void shuffle(List<?> list, Random random)

参数:

  • 列表:您将通过的列表将被洗牌。
  • 随机:这是传递种子值的随机函数,该种子值将成为随机性的来源。

返回:

  • shuffle 函数不返回任何值;它只是随机排列列表。

Java 中的 Shuffle() 示例

在下面的示例中,我们从包含一些字母的数组创建了一个列表,并使用 shuffle 方法对数组进行洗牌。每次运行时,您都会得到不同的随机列表。

示例#1

代码:

import java.util.*;
public class CollectionsShuffleExampleWithoutRandom {
public static void main(String[] args) {
List<String> list = Arrays.asList("R", "A", "H", "U", "L");
System.out.println("Before Shuffle : "+list);
Collections.shuffle(list);
System.out.println("After shuffle : "+list);
}
}

输出:

Java 中的 Shuffle()

示例#2

在下面的示例中,我们创建一个整数链接列表并向其中添加一些整数。但这里我们传递了另一个参数,即随机函数,它将成为随机性的来源。然后我们传递了种子值为5的Random函数。这是另一种风味,或者我们可以说是使用带有Randomness的shuffle函数的方法。

代码:

import java.util.*;
public class CollectionsShuffleWithRandom {
public static void main(String[] args) {
//Create linked list object
LinkedList<Integer> list = new LinkedList<Integer>();
//Add values
list.add(90);
list.add(100);
list.add(1);
list.add(10);
list.add(20);
System.out.println("Before Shuffle = "+list);
//Random() to shuffle the given list.
Collections.shuffle(list, new Random());
System.out.println("Shuffled with Random() = "+list);
//Random(5) to shuffle the given list.
Collections.shuffle(list, new Random(5));
System.out.println("Shuffled with Random(5) = "+list);
}
}

输出:

Java 中的 Shuffle()

无 Shuffle 方法的洗牌

如果您想要更多地控制随机播放,那么您可以编写自己的方法来使用 random 方法和另一种随机方法来随机播放列表。这种方法更加灵活且易于适应任何应用。您可以实际了解 Java 内置方法中的 shuffle 是如何工作的。

输入: 一个 int 数组

输出: 打乱数组(按随机顺序)

示例:

public static int[] ShuffleArray(int[] array){
Random rand = new Random();  // Random value generator
for (int i=0; i<array.length; i++) {
int randomIndex = rand.nextInt(array.length);
int temp = array[i];
array[i] = array[randomIndex];
array[randomIndex] = temp;
}
return array;
}

上面的函数只需要传递一个数组整数,它就会返回一个打乱后的数组。在函数内部,您可以看到我们正在迭代数组直到其长度并生成一个随机数,它将被视为数组索引,它将与另一个数组交换。这就是数组内元素交换的方式。生成的数组将是交换后的数组。

从上面的函数中,我们可以得到 shuffle 函数的基本概念,其中将发送一个值列表,并且每次迭代数组中的元素时都会生成一个随机数。该元素将与同一列表中的另一个元素交换,索引是从随机函数随机生成的。

随机播放功能的要点

  • 此方法适用于随机排列列表元素并打乱它们。
  • 每次执行的结果都可能不同。
  • 该函数不需要太多时间,并且以线性时间运行。
  • 如果你提供的列表没有实现RandomAccess接口,那么shuffle会首先将列表复制到数组中,对数组副本进行洗牌,然后将其复制到结果列表中并返回。
  • 随机播放向后遍历列表 - 重复从最后一个元素到第二个元素。
  • 遍历时,它随机选择元素并与当前位置交换。
  • 随机选择的元素是列表中从第一个元素到当前元素的部分。

例外:

  • UnsupportedOperationException:如果传递的列表或列表迭代器不支持集合操作。

Shuffle 的应用

在很多情况下,下面的随机播放功能可能是一些应用:

  • 在 QA 应用程序中打乱问题列表。
  • 随机排列您每天想要向应用程序用户显示的报价列表。
  • 您想要为用户分配彩票号码的彩票应用程序。
  • 为付款字段生成唯一的交易编号。
  • 可以为不同用户生成唯一的用户id,并将其作为用户id的前缀。
  • 它也可以用于加密应用程序。

结论

在上面的文章中,我们了解了 shuffle 的工作原理以及如何使用它。可能有多个用例,您可以使用带有随机参数的 shuffle 函数,或者不使用随机参数的 shuffle 函数,并且某些应用程序可能需要不同的灵活实现,您可以使用 Java 的 Random 函数编写自己的 shuffle 函数。

以上是Java 中的 Shuffle()的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn