Supponendo che più elementi dell' array possano avere valori uguali fra loro, e che la distribuzione dei valori avvenga in modo casuale, puoi provare una cosa del genere:
Codice PHP:
$variabile = 800;
$somma = 0;
for($i = 0; $i < 100; $i++) {
$array[$i] = rand(0, $variabile);
$somma = $somma + $array[$i];
$variabile = 800 - $somma;
}
$variabile rappresenta il valore massimo che può assumere ogni elemento dell' array (che varia ad ogni iterazione del ciclo) ed assume come valore di partenza il numero che vuoi scomporre all' interno dell' array, mentre $somma è la somma di tutti i valori assunti dai vari elementi dell' array (inizialmente è 0, alla seconda iterazione vale $array[0], alla terza $array[0] + $array[1], etc.) Ad ogni iterazione viene generato il numero casuale, viene aggiornata la variabile $somma ed infine il valore massimo assumibile viene ridotto della somma di tutti i valori assunti fino a quel punto.
Ad esempio:
Alla prima iterazione lo script assegna
Codice PHP:
$array[0] = rand(0, 800) // supponiamo generi 100;
$somma = 100;
$variabile = 700;
Alla seconda
Codice PHP:
$array[1] = rand(0, 700) // supponiamo generi 150;
$somma = 250;
$variabile = 550;
Alla terza
Codice PHP:
$array[1] = rand(0, 550)
...
...
...