Javascript: Número aleatório de 5, sem repetição até que todos tenham sido usados

Eu estou usando o código abaixo para atribuir uma classe aleatória (fora de cinco) para cada imagem individual na minha página.

$(this).addClass('color-' + (Math.floor(Math.random() * 5) + 1));

Está funcionando muito bem, mas eu quero fazer com que nunca haja dois da mesma classe seguidos.

Melhor ainda seria se nunca houvesse duas da mesma linha, e também não usasse nenhuma classe mais de uma vez até que todas as 5 tivessem sido usadas ... Como em, remova cada classe usada da matriz até que todas elas foram utilizados, em seguida, inicie novamente, não permitindo que o último dos 5 anteriores e o primeiro dos 5 seguintes sejam da mesma cor.

Espero que faça sentido, e obrigado antecipadamente por qualquer ajuda.

questionAnswers(4)

yourAnswerToTheQuestion