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的随机置换的主要内容,如果未能解决你的问题,请参考以下文章

java基础程序设计

eclipse无法解析导入 java.util

Unity 不导入搅拌机置换修改器的结果

Java实现猜数游戏

猜数游戏

如何用JAVA将数据库中的数据导入到excel表格