如何在Java中随机打乱数组

时间:2020-02-23 14:34:41  来源:igfitidea点击:

有两种方法可以在Java中随机打乱数组。

  • Collections.shuffle()方法
  • 随机类

1.使用Collections类对数组元素进行混洗

我们可以从数组创建一个列表,然后使用Collections类的shuffle()方法来对其元素进行随机排序。
然后将列表转换为原始数组。

package com.theitroad.examples;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ShuffleArray {

	public static void main(String[] args) {

		Integer[] intArray = { 1, 2, 3, 4, 5, 6, 7 };

		List<Integer> intList = Arrays.asList(intArray);

		Collections.shuffle(intList);

		intList.toArray(intArray);

		System.out.println(Arrays.toString(intArray));
	}
}

输出:[1、7、5、2、3、6、4]

请注意,Arrays.asList()仅适用于对象数组。
自动装箱的概念不适用于仿制药。
因此,您不能使用这种方式来为基元改组数组。

2.使用随机类随机排列数组

我们可以在for循环中遍历数组元素。
然后,我们使用Random类来生成随机索引号。
然后将当前索引元素与随机生成的索引元素交换。
在for循环的结尾,我们将有一个随机混洗的数组。

package com.theitroad.examples;

import java.util.Arrays;
import java.util.Random;

public class ShuffleArray {

	public static void main(String[] args) {
		
		int[] array = { 1, 2, 3, 4, 5, 6, 7 };
		
		Random rand = new Random();
		
		for (int i = 0; i < array.length; i++) {
			int randomIndexToSwap = rand.nextInt(array.length);
			int temp = array[randomIndexToSwap];
			array[randomIndexToSwap] = array[i];
			array[i] = temp;
		}
		System.out.println(Arrays.toString(array));
	}
}

输出:[2、4、5、1、7、3、6]