Hola, hice una modificación en tu script, no se si es válido para lo que estás haciendo, ya no se repiten los colores.
Código Javascript
:
Ver originalfunction changeColor(){
var numbers = [], i = 0, arg = arguments
while(arg[i]){
while(curNumber = Math.floor( Math.random() * 8 ) + 1)
if(!numbers[curNumber]) break
numbers[curNumber] = true
arg[i++].attr('class', 'color' + curNumber)
}
setTimeout(function(){changeColor.apply(this,arg)}, 1000)
}
changeColor($('#cuadrouno'),$('#cuadrodos'),$('#cuadrotres'),$('#cuadrocuatro'))
​
Resultado:
http://jsfiddle.net/wZVanG/hvqyD/