E' esattamente quello che voglio fare, ma la funzione rand non prevede un peso per i valori tra cui scegliere.

Io prendo dei dati li ordino in modo che in posizione 0 ci sia quello che secondo i criteri di ordinamento è l'elemento più importante, ma non deve essere preso sistematicamente, deve solo avere una maggiore probabilità rispetto agli altri.

Diciamo che la probabilità con cui deve essere selezionato è

floor($num_elementi/10)*10 + 10
gli altri devono dividersi equamente la probabilità restante

Quindi ad esempio:
se ci sono 3 elementi
probabilità elemento 0 = floor(3/10)*10 + 10 = 40
probabilità elemento 1 = (100 - 40) / 2 = 30
probabilità elemento 2 = (100 - 40) / 2 = 30

se ci sono 4 elementi
probabilità elemento 0 = floor(4/10)*10 + 10 = 30
probabilità elemento 1 = (100 - 30) / 3 = 23
probabilità elemento 2 = (100 - 30) / 3 = 23
probabilità elemento 3 = (100 - 30) / 3 = 23
(non si arriva a 100, ma non fa niente, basta che uno venga selezionato)

e via dicendo.

EDIT: la formula non mi pare che funzioni, l'ho scritta al volo e dovrò cambiarla, ma l'idea è quella lì