How do I shuffle the characters in a string (e.g. hello could be ehlol or lleoh or …). I don’t want to use the Collections.shuffle(...)
method, is there anything simpler?
Advertisement
Answer
I dont know anything simpler. But you can use the Math.rand() functionality to generate a random number within the range of the character’s length without replace and that would give you a shuffled output
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 */