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ì