[ad#adsense1]

Ciao a tutti, scrivo questo post tecnico veloce per segnalarvi una possibile soluzione ad un problema che ho incontrato spesso ultimamente, nell’ambito dello sviluppo in Actionscript3. Come mischiare a caso gli elementi di un array?

Dal lato pratico è una cosa piuttosto comune: basti pensare ad un mazzo di carte e al fatto che in un qualsiasi gioco si debba mischiare. Come fare? Ecco una soluzione.

Il trucco sta nell’usare questa funzione che riporto di seguito:

		public function Shuffle(a:Array):Array
		{
			var r:int;
			var res:Array = new Array();
			while (a.length > 0)
			{
				r = Math.floor(Math.random() * a.length);
				res.push(a[r]);
				a.splice(r, 1);
			}

			return res;
		}

Il codice è semplice da spiegare: viene preso in input come argomento l’array da ordinare. Prendendo un numero a caso da zero alla lunghezza dell’array stesso, si usa questo numero come indice da usare per l’operazione di push nell’array risultante.

Fatto questo n volte, dove n è la grandezza iniziale dell’array, la lunghezza dell’array iniziale è 0, quindi si esce dal ciclo per restituire l’array ordinato in return. Ovviamente non si deve dimenticare l’operazione di Splice, per evitare di rimanere all’infinito nel ciclo.

Buon Lavoro!

  • Share/Bookmark