Java:不导入java.util的随机置换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:不导入java.util的随机置换相关的知识,希望对你有一定的参考价值。
[Internet上有许多不同的指令可以进行随机排列,但是它们都使用库。有什么方法可以在不使用任何内置库的情况下进行随机排列?我知道如何使用Math.random()生成随机数。生成随机排列是否与Math.random()有关?改组对我来说看起来很复杂。
我的目标是,如果我通过'java randompermutation 3'运行该程序,则该程序返回1,2,3或1,3,2或3,1,2或3,2,1或2 ,3,1或2,1,3
答案
用于对数组排序的一种算法是基于选择排序的,称为选择混洗。遍历数组,并为每个索引选择一个随机索引,然后交换这两个索引。由于这看起来有点像家庭作业,因此我将不提供任何实际代码,但这是一种解决方案。
另一答案
您是否可以像下面显示的示例一样进行操作
import java.util.*;
public class Main
public static void main(String[] args) throws Exception
List<Integer> input = new ArrayList<Integer>(Arrays.asList(1,2,3));
List<Integer> shuffleInput = shuffle(input);
System.out.println(shuffleInput.toString());
public static List<Integer> shuffle(List<Integer> input)
List<Integer> inputCopy = new ArrayList<>(input);
List<Integer> output = new ArrayList<>(input.size());
while(inputCopy.size()!=0)
int randPicker = (int)(Math.random()*inputCopy.size());
output.add(inputCopy.remove(randPicker));
return output;
此代码将任意大小的Integer
列表作为输入,并返回包含混合值的列表。
如果列表始终是3个数字,则可能是一个简单的版本
以上是关于Java:不导入java.util的随机置换的主要内容,如果未能解决你的问题,请参考以下文章