Domanda
Devo stampare i numeri 1-100 in ordine casuale. la dichiarazione stampata dovrebbe essere:
echo 'h {'. $ num. '}';
qual è il codice più breve per farlo?
Soluzione
Il modo più semplice è usare shuffle con un array contenente i 100 numeri
per es.
$sequence = range(1, 100);
shuffle($sequence);
foreach ($sequence as $num) {
echo 'h{'.$num.'}';
}
Vedi anche la funzione range
Modifica
Ho pensato di aggiungere un po 'a ciò che fa shuffle. Anche se php.net non lo dice esplicitamente, è probabilmente basato sulla versione moderna del Fisher -Yates Shuffle algoritmo . Per una dimostrazione video di come funziona, vedi http://www.youtube.com/watch? v = Ckh2DJrP7F4 . Guarda anche questa eccellente flash dimostrazione
L'algoritmo shuffle funziona essenzialmente in questo modo:
- Per un determinato set di elementi da A1 a AN e n = N;
- Seleziona casualmente un elemento Ak tra A1 e An inclusivo
- Scambia Ak e An
- Imposta n = n - 1
- Ripeti dal passaggio 2
Spero che sia d'aiuto.
Altri suggerimenti
Vedi l'esempio di shuffle ()
:
$numbers = range(1, 20);
shuffle($numbers);
foreach ($numbers as $number) {
echo "$number ";
}