Yeah, true random sucks pretty badly for any sort of repeated selection. You could make your algorithm potentially even better by grouping characters into different roles and not repeating them in a row either. Never give two sword characters in a row if possible, for example.