Javascript: número aleatorio de 5, no se repite hasta que se hayan utilizado todos

Estoy usando el siguiente código para asignar una clase aleatoria (de cinco) a cada imagen individual en mi página.

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

Está funcionando muy bien, pero quiero hacerlo para que nunca haya dos de la misma clase seguidas.

Aún mejor sería si nunca hubiera dos iguales en una fila, y tampoco usó ninguna clase más de una vez hasta que se usaron las 5 ... Como en, elimine cada clase usada de la matriz hasta que todas se han utilizado, luego comenzar de nuevo, sin permitir que el último de los 5 anteriores y el primero de los siguientes 5 sean del mismo color.

Espero que tenga sentido, y gracias de antemano por cualquier ayuda.

Respuestas a la pregunta(4)

Su respuesta a la pregunta