一尘不染

如何在不使用Collections.shuffle(…)的情况下随机播放字符串中的字符?

java

如何将字符串中的字符随机播放(例如,hello可能是ehlol或lleoh或…)。我不想使用该Collections.shuffle(...)方法,有没有更简单的方法?


阅读 160

收藏
2020-09-08

共1个答案

一尘不染

我不知道更简单。但是您可以使用Math.rand()功能生成字符长度范围内的随机数,而无需替换,这将给您带来混乱的输出

public class Shuffle {
    public static void main(String[] args) {
        Shuffle s = new Shuffle();
        s.shuffle("hello");

    }
    public void shuffle(String input){
        List<Character> characters = new ArrayList<Character>();
        for(char c:input.toCharArray()){
            characters.add(c);
        }
        StringBuilder output = new StringBuilder(input.length());
        while(characters.size()!=0){
            int randPicker = (int)(Math.random()*characters.size());
            output.append(characters.remove(randPicker));
        }
        System.out.println(output.toString());
    }
}
/*
Sample outputs
hlleo
llheo
leohl
lleho
*/
2020-09-08