Forum de discussion
Forum « Flash et Shockwave » (archives)
Re: Nombre aléatoires non-identiques? : Array stoquant les nombres et comparaison, boucles While et For.
Envoyé: 13 février 2005, 16h04 par dada
J'ai fait un ptit script dont le principe est le suivant :
Pour savoir si les nombres tirés au hazard ont déjà été tirés, on les stoque (orthographe ?) dans un tableau.
A chaque nouveau nombre tiré, on compare avec le contenu du tableau. Si ce nombre sort pour la 2° fois, on en tire un autre, sinon on le rajoute dans le tableau.
Il ya plus de renseignements dans les commentaires :
----------------------------------------
var howManyNumbers:Number = 5; // le nombre de chiffres qu'il reste à trouver
var choosenNumbers_arr:Array = new Array (); // un tableau dans lequel on va ajouter chaque nouveau chiffre
// C'est grâce au contenu de ce tableau qu'on pourra détecter si un chiffres est déjà sortit
// tant que le nombre de chiffres resttant à trouver est supérieur à 0,
// on effectue la boucle while
while (howManyNumbers > 0)
{
// on tire un nombre entier compris entre 0 et 10
var randomNumber:Number = Math.round (10*Math.random());
// on initialise sur false une variable qui prendra la valeur true
// si le nombre est trouvé dans le tableau (donc s'il a déjà été tiré)
var thisNumberExist:Boolean = false;
// on vérifie s'il est déjà dans une des cases du tableau
for (var j=0; j<choosenNumbers_arr.length; j++)
{
if (choosenNumbers_arr[j] == randomNumber)
{
// s'il est trouvé dans le tableau, on passe la variable sur true et on casse la boucle
thisNumberExist = true;
break;
}
}
// A la fin de la boucle 'for', où lorsqu'elle est cassée, on vérifie si la vriable est sur false
// (donc le chiffre n'a pas été trouvé dans le tableau)
if (thisNumberExist == false)
{
// dans ce cas, on le rajoute au tableau...
choosenNumbers_arr.push (randomNumber);
// ... et on décrémente le nombre de chiffres restant à trouver
howManyNumbers -= 1;
}
}
// une fois tout ce bazard terminé, on affiche le résultat (le contenu du tableau) dans la fenêtre de sortie
trace(choosenNumbers_arr);
----------------------------------------
++
dada
Réponses
|