Forums Développement Multimédia

Aller au contenu

nombre aléatoire

CODE Actionscript

17 réponses à ce sujet

#1 william1327245708

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 381 messages

Posté 11 January 2003 - 15:02 PM

comment générer des nombres aléatoire unique qui ne se suivent pas ???
sans prendre faire un random de 100000000000 !
mais avec par exemple 8 chiffres ?

#2 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 11 January 2003 - 15:07 PM

Hello smile.gif
Normalement avec :
valeur = Math.floor(Math.random() * 8 ) ;
cela ne devrait pas se suivre ... ou alors tu as pas de chance wink.gif
bye smile.gif
PS : c'est la semaine du Math.random() biggrin.gif

#3 william1327245708

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 381 messages

Posté 11 January 2003 - 15:40 PM

je me doute mais c'était dans le cas ou on a vraiment pas de chance !
on a validé cette solution au bout du compte !
j'ai dis 8 pour pas passer pour un con mais on a 12 chiffres en fait !
alors fo vraiment vraiment pas avoir de chance du tout
(y sont fait quoi marseille contre OL hier ?)

#4 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 11 January 2003 - 15:43 PM

Je ne suis pas trop le foot smile.gif peut pas te dire smile.gif
sinon sur google je trouve -> http://www.cfoot.com/division_1/story_89880.shtml
bye wink.gif

#5 supertomate

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 4147 messages

Posté 11 January 2003 - 15:58 PM

nombre aléatoire unique :
CODE
Number.shuffle = function (n) {

var i;

var r;

var tmp;

var arShuffled = new Array(n);



for (i=0; i < n; i++) {

arShuffled[i] = i;

}

for (i=0; i < n; i++) {

r = random(n);

tmp = arShuffled[i];

arShuffled[i] = arShuffled[r];

arShuffled[r] = tmp;

}

return (arShuffled)

}

//



le lien sur layer51.com

#6 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 11 January 2003 - 16:07 PM

lut'
c'est nikel!
fodrait simplement l'actualiser> random() est déprécié maintenant…
:wink:

#7 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 11 January 2003 - 16:11 PM

CODE


Number.shuffle = function (n) {

var i;

var r;

var tmp;

var arShuffled = new Array(n);



for (i=0; i < n; i++) {

arShuffled[i] = i;

}

for (i=0; i < n; i++) {

r = Math.round(Math.random()*n);

tmp = arShuffled[i];

arShuffled[i] = arShuffled[r];

arShuffled[r] = tmp;

}

return (arShuffled)

}



trace(Number.shuffle(8));


j'aime bien mon Math.random() smile.gif
Disons que ce qui est bien avec ta fonction ci dessus c'est que tu génères un tableau aléatoire sans jamais avoir la même valeur smile.gif mais c'est pas applicable à toutes les situations smile.gif

Sinon ensuite faut extraire l'élément du tableau ? et là encore tu fais un Math.random ? smile.gif

#8 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 11 January 2003 - 16:14 PM

biggrin.gif super :wink:

#9 supertomate

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 4147 messages

Posté 11 January 2003 - 16:17 PM

Sinon je vous signale qu'il y a aussi le proto de FlashGuru dans le post de layer51 :wink:

C'est vrai que Math.random ets plus approprié.

Salut Jean-Philippe, content de te voir aussi sur ce forum :wink:

#10 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 11 January 2003 - 16:18 PM

ya kan meme un bleme!
sur certaine sortie on trouve >> 6,7,2,,1,5,8,2

#11 supertomate

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 4147 messages

Posté 11 January 2003 - 16:19 PM

oui le return doit être modifié en :
CODE
return arShuffled[r]

par exemple mais dès lundi je vous remettrai mon proto qui est malheureusement au bureau 8)

#12 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 11 January 2003 - 16:22 PM

merci Marsu! :wink:

#13 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 11 January 2003 - 16:40 PM

Bon faut que je vois 2 seconde de + ton code car reste une valeur undefined dans le tableau de temps en temps ...
en attendant :
CODE


_global.n = 8;



Array.prototype.shuffle = function(n) {

var i;

var r;

var tmp;

for (i=0; i < n; i++) {

 this[i] = i;

}

for (i=1; i < n; i++) {

 r = Math.round(Math.random()*n);

 tmp = this[i];

 this[i] = this[r];

 this[r] = tmp;

}  

trace (this);

}



Array.prototype.extraire = function () {

if (this.length < 1) {

 this.shuffle(n); // on refait un tableau aléatoire

} else {

 var sortie = this.shift() // on supprime l'élément

 return sortie;

}

}



Tableau = [];

Tableau.shuffle (n);



// exemple on extrait successivement des valeurs qui sont jamais les même

// soit un bouton "bouton"

_root.bouton.onPress = function () {

val = Tableau.extraire(1);

trace (val);

}


bye smile.gif

#14 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 11 January 2003 - 18:34 PM

Bon j'ai pas cherché à optimiser smile.gif
CODE


_global.n = 8;



Array.prototype.shuffle = function(n) {

var i;

var r;

var tmp;

for (i=0; i < n; i++) {

 this[i] = i;

}

for (i=0; i < n; i++) {

 r = Math.round(Math.random()*n);

 tmp = this[i];

 this[i] = this[r];

 this[r] = tmp;

}  

for (i=0; i < n; i++) {

 if (this[i]==undefined) this.splice(i,1); // on néttoie le tableau

}

trace (this);

}



Array.prototype.extraire = function () {

if (this.length < 1) {

 this.shuffle(n); // on refait un tableau aléatoire

 return this.extraire(); // on relance le proto

} else {

 return (this.shift()); // on supprime le premier élément et on retourne sa valeur }

}



Tableau = [];

Tableau.shuffle (n);



// exemple on extrait successivement des valeurs qui sont jamais les même

// soit un bouton "bouton"

_root.bouton.onPress = function () {

_root.val = Tableau.extraire();

trace (val);

}



J'ai fait une petite routine qui nettoie le code de la chaine undefined .. mais doit y avoir plus simple.
bye smile.gif

#15 supertomate

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 4147 messages

Posté 13 January 2003 - 10:10 AM

Salut, me voilà de retour au bureau et donc j'ai remis la main sur le proto :
CODE


Tabchoix1 = new Array();

Tabchoix2 = new Array();

Number.getUniqueRandom = function(num, whichtab) {

var picked = math.floor(math.Random()*num);

var test = picked;

if (Number(test) != Number(_root["Tabchoix"+whichtab][0])) {

 _root["Tabchoix"+whichtab].unshift(test);

 return test;

} else {

 var picked = math.floor(math.Random()*num);

 var test = picked;

 _root["Tabchoix"+whichtab].unshift(picked);

 return picked;

}

};

J'utilisais deux tableaux de phrases à choisir au hasard, c'est pour cela qu'il y a deux déclarations d'array

#16 neolao

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3827 messages

Posté 13 January 2003 - 11:23 AM

heu ca sert à quoi ca ? :roll:

#17 supertomate

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 4147 messages

Posté 13 January 2003 - 11:51 AM

Comme le port-salut c'est marqué dessus
Number.getUniqueRandom renvoie un nombre aléatoire unique :roll:

#18 neolao

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3827 messages

Posté 13 January 2003 - 16:24 PM

heu .... unshift c'est pas pour ajouter des éléments ?



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)