Autore Topic: Numeri casuali diversi  (Letto 2627 volte)

stesil

  • Anziani
  • Utente storico
  • *
  • Post: 1219
    • quellidelcucuzzolo
Numeri casuali diversi
« il: 18 Luglio, 2012, 12:48:49 »
Ho la necessità di generare 4 numeri casuali diversi tra loro, che definiscono le chiavi numeriche degli elementi di un array. La funzione rand() viene eseguita su un valore massimo piuttosto basso (20), e spesso i numeri generati sono ripetuti.

Ho ovviato al problema in questo modo:
- elimino le chiavi generate con unset();
- eseguo la funzione rand in un ciclo while ponendo come condizione la non esistenza della chiave numerica nell'array;

Mi sono accorta, mettendo degli echo nel codice, che il ciclo while spesso viene eseguito almeno tre volte ... chiedo: c'è un modo migliore, più efficiente per ottenere quello che cerco?

Questa è una parte del codice che sto provando ($img è un array che contiene i nomi dei file presenti in una cartella):

Codice:
Only registered users can see contents. Please click here to Register or Login.
Grazie  :)

Silvana


Edit: avevo dimenticato un pezzetto di codice ....
« Ultima modifica: 18 Luglio, 2012, 13:11:11 da stesil »

tigrone

  • Moderatore
  • Utente esperto
  • *****
  • Post: 322
    • tuoweb
Re:Numeri casuali diversi
« Risposta #1 il: 18 Luglio, 2012, 23:07:53 »

Codice:
Only registered users can see contents. Please click here to Register or Login. :)

stesil

  • Anziani
  • Utente storico
  • *
  • Post: 1219
    • quellidelcucuzzolo
Re:Numeri casuali diversi
« Risposta #2 il: 19 Luglio, 2012, 09:00:36 »
Ho capito. Devo separare i due cicli. Il ciclo while si ripete finchè nell'array $numeri sono presenti 4 numeri ... e non serve usare unset perchè il numero generato viene inserito nell'array solo se non è ancora presente un elemento con lo stesso valore. Poi uso i numeri generati per identificare il file univoco dei link nel ciclo for.

Ho integrato il codice che mi hai postato in questo modo e funziona benissimo:

Codice:
Only registered users can see contents. Please click here to Register or Login.
Grazie Tigro! ;)