E se invece di avere 4 colori fissi li avessimo random (ma sempre con lo stesso seed inziale per avere sempre i colori nello stesso ordine)?
Ci sarebbe il problema del contrasto... ma potremmo testare il nuovo colore calcolato con questo algoritmo:
http://www.w3.org/TR/AERT#color-contrast 
e se il colore random scelto non è sufficientemente contrastato allora passiamo al prossimo random.
Una cosa tipo:
$seed = ..........; //Fisso il seed per avere sempre la stessa sequenza di colori
$numColore = 1;
while ($numColore <= $livelloQuotatura) {
$coloreOk = false;
while (!$coloreOK) {
$colore = $random($seed, 1024*1024*16); //Volgio che random vada da 0 a 16Milioni di colori
if (testContrastoW3C($colore) {
$coloreOK = true;
}
}
$numColore += 1;
}
//$colore ora contiene il colore contrastato correttamente per il livello di quotatura corrente