Have a look at my online demos Complex Randomisation and Randomisation without repetition. These are both based on the assumption that you want to control the total number of presentations of each syllable. When I want random without repetition for something I don’t mind being unequal I use the following code:
thisIndex = (thisIndex + 1 + randint(numberOfOptions - 1)) % numberOfOptions
For example, if there are 5 colours in an emotional Stroop task [‘red’, ‘blue’, ‘green’, ‘yellow’, ‘purple’] and the previous value of thisIndex was 2 (“green”) because counting starts from 0 for lists) then randint will generate a random integer from 0 to 3 and the new value of thisIndex will be between 3 (2 + 1 + 0 = 3; 3 % 5 = 3; ‘yellow’) and 6 (2 + 1 + 3 = 6; 6 % 5 = 1; ‘blue’).