Já passei por essa dor de cabeça, e quem dera eu descobrir que fazer o shuffle de um array é a solução mais sana mesmo 😅. A alternativa insana é implementar um gerador de numero aleatório no dedo (LFSR quando eu tentei) que por natureza tem o número máximo de valores que gera antes de repetir, o problema é que eles só vão trabalhar corretamente com periodos em bases de 2. Então o melhor que poderia acontecer é gerar valores entre 0 e 64, e ignorar os maiores que 60. Mas como eu vivo aprendendo e esquecendo, muitas vezes é melhor ter um código simple do que um que roda 20ms mais rápido
Em resposta a Como gerar números aleatórios sem repetição
2
1
Implementar seu próprio gerador cai no caso de reinventar a roda. É muito interessante como exercício, mas pra aplicações reais, use o que já tem pronto (especialistas muito mais inteligentes do que nós já pensaram exaustivamente nisso e raramente - a não ser que vc seja um gênio - conseguiremos algo melhor) :-)