| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Glücklicher User Registriert seit: Oct 2003 Ort: Friedrichshafen (Bodensee)
Beiträge: 53
| random gibt doppelte zahlen aus
Ich brauche 178 zufallszahlen, die nicht doppelt auftreten dürfen. zufallszahl_a = random(178); //erstellung der zufallszahlen //-------------------------------------------------------------------------- suche_a = zufallszahl_a; belegt_a = -2; for (i=0;i>178;i++) { if(arr_zahlen_a[i] == suche_a) belegt_a=i; } // überprüft ob die zahl schon in dem array vorhanden ist //---------------------------------------------------------------------------- }else{ if(belegt_a == -2){ pushed_a = arr_zahlen_a.push(suche_a); _root["start_ani_a_"+suche_a].gotoAndPlay(2); gotoAndPlay(3); }else{ gotoAndPlay(3); } } // wenn die zahl nicht vorhandenist, sollsie in das array angehängt werden, damit es beim nächten durchlauf erkannt wird. das Problem ist, dass dennoch einige zahlen doppelt genommen werden. hat mir da jemand eine idee? |
| | |
| | #2 (permalink) |
| Ketchuper Registriert seit: Jun 2002
Beiträge: 129
|
for (i=0;i>178;i++) { if(arr_zahlen_a[i] == suche_a) belegt_a=i; } // überprüft ob die zahl schon in dem array vorhanden ist also diese schleife wird nicht ausgeführt, weil deine bedingung i>178 nicht eintritt. du startest ja mit i=0 und willst noch oben zählen, oder?! du musst i<178 reinsetzen. außerdem generierst du mit random(178) keine 178 zufallszahlen, sondern eine zufallszahl zwischen 0 und 178 (oder 177?). greets
__________________ ---------- Mannoman |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Feb 2002 Ort: Hamburg
Beiträge: 1.281
|
Dieser Ansatz ist, was die Performance angeht sehr schlecht. Je weiter du ans Ende des Array's kommst, desdo mehr Fehlversuche hast du bei dem der Zufallswert schon vorhanden ist und du trotzdem das ganze Array durchsuchst. Besser wäre im ersten Schritt ein Array mit allen Zahlen von 1 bis 178 zu füllen und dann nurnoch X mal die Positionen zu vertauschen. Das sind zwei Vorgänge mit vorhersehbaren Laufzeiten. Ich glaube hier war auch schonmal was passendes zum Thema Array.shuffle, wenn ich mich da nicht täusche. mfg Robert
__________________ robertreich.de v4 | Pixelfonts & FlashSite Tutorial Friends of ED - Byte Size Flash MX: Adventures in Optimization "Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime." |
| | |
| | #5 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
| http://www.SeibsProgrammLaden.de/fra...gm/Algorithmen um doppelte zu vermeiden wäre eine kleine anpassung sinnvoll z.B.: vArray[v]=vArray[v-1]+random()+.01;
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #6 (permalink) |
| Glücklicher User Registriert seit: Oct 2003 Ort: Friedrichshafen (Bodensee)
Beiträge: 53
|
wenn es jemand wissen will hier meine vorgehensweise, nach dem ich einer eurer vorschläge gelesen habe. -----------(Schlüsselbild 1)---------- myArray_b=[0] Array.prototype.shuffle = function(Zufall){//Zufall = Anzahl Verschiebungen for(i=0;i<Zufall;i++){//So oft wie durch Zufall vorgegeben number=random(this.length);//Such Dir eine Nummer aus element=this[number];//Merk Dir den Inhalt des Elementes mit dieser Nummer this.splice(number,1);//Lösch das Element aus dem Array this.splice(random(this.length),0,element);//Füge den Inhalt an zufälliger Stelle wieder ein } } for(i=1;i<178;i++){ pushed_a = myArray_b.push(i); }//füllt das Array mit den Zahlen von 1-178 myArray_b.shuffle(178);//Verschiebe zufällig 178 Elemente --------------(Schlüsselbild 3)--------------------- if(myArray_b.length>0){ popped_b = myArray_b.shift();//gibt erste zahl des Array in Variable und löscht diese im Array _root["start_ani_a_"+popped_b].gotoAndPlay(2); gotoAndPlay(2); }else{ stop(); } ********************************************* * * * zum betrachten für flashplayer7 als demo unter * * * * http://jenniferlovehewitt.all4pages.de * * * ********************************************* |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Feb 2002 Ort: Hamburg
Beiträge: 1.281
|
Sieht gut aus. Als Tipp zum posten hier: Klammer beim nächsten mal den AS-code ein. <as></as> in eckigen Klammern. Dann kann man den Code besser lesen, da er dann formatiert und gehighlightet wird. mfg Robert
__________________ robertreich.de v4 | Pixelfonts & FlashSite Tutorial Friends of ED - Byte Size Flash MX: Adventures in Optimization "Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime." |
| | |
| | #8 (permalink) |
| Glücklicher User Registriert seit: Oct 2003 Ort: Friedrichshafen (Bodensee)
Beiträge: 53
|
o.k. nicht als strafe nur zur übung, hier nochmal der code in schöner form. -----------(Schlüsselbild 1)---------- <as> myArray_b=[0] Array.prototype.shuffle = function(Zufall){//Zufall = Anzahl Verschiebungen for(i=0;i<Zufall;i++){//So oft wie durch Zufall vorgegeben number=random(this.length);//Such Dir eine Nummer aus element=this[number];//Merk Dir den Inhalt des Elementes mit dieser Nummer this.splice(number,1);//Lösch das Element aus dem Array this.splice(random(this.length),0,element);//Füge den Inhalt an zufälliger Stelle wieder ein } } for(i=1;i<178;i++){ pushed_a = myArray_b.push(i); }//füllt das Array mit den Zahlen von 1-178 myArray_b.shuffle(178);//Verschiebe zufällig 178 Elemente </as> --------------(Schlüsselbild 3)--------------------- <as> if(myArray_b.length>0){ popped_b = myArray_b.shift();//gibt erste zahl des Array in Variable und löscht diese im Array _root["start_ani_a_"+popped_b].gotoAndPlay(2); gotoAndPlay(2); }else{ stop(); } </as> ********************************************* zum betrachten für flashplayer7 als demo unter http://jenniferlovehewitt.all4pages.de ********************************************* |
| | |
| | #9 (permalink) | |
| Neuer User Registriert seit: Feb 2002 Ort: Hamburg
Beiträge: 1.281
| Zitat:
![]() Siehe auch die Schaltflächen oben über der Textbox beim posten. # , PHP , AS , List , Quote und so weiter...
__________________ robertreich.de v4 | Pixelfonts & FlashSite Tutorial Friends of ED - Byte Size Flash MX: Adventures in Optimization "Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime." | |
| | |
| | #10 (permalink) |
| Flashworker Registriert seit: Nov 2001 Ort: Wiesbaden
Beiträge: 10.945
|
kleine anmerkung: zufallszahlen heißt, dass es auch zufall ist und das sie deswegen auch doppelt vorkommen mit großer wahrscheinlichkeit. du möchtest die zahlen in zufälliger reihenfolge ausgeben und das nächste mal bitte die AS-Tags mit den richtigen Klammern verwenden, ist um einiges komfortabler zu lesen edit: zu langsam |
| | |
| | #11 (permalink) |
| Glücklicher User Registriert seit: Oct 2003 Ort: Friedrichshafen (Bodensee)
Beiträge: 53
|
o.k. nicht als strafe nur zur übung, hier nochmal der code in schöner form. ActionScript:
zum betrachten für flashplayer7 als demo unter http://jenniferlovehewitt.all4pages.de ********************************************* |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Feb 2002 Ort: Hamburg
Beiträge: 1.281
|
jupp. ![]() Edit: Ahhh... Na siehste... So sieht das doch gleich viel schicker aus. Edit2: wenn du jetzt noch den "ändern" Button gefunden hast (für's nächste mal) dann kannste die oberen Beispiele auch nochmal schick machen.
__________________ robertreich.de v4 | Pixelfonts & FlashSite Tutorial Friends of ED - Byte Size Flash MX: Adventures in Optimization "Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime." Geändert von r0b (12-03-2004 um 10:32 Uhr) |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Jan 2002
Beiträge: 1.244
|
hi, hier noch etwas zum Thema "doppelte Zufallszahlen vermeiden" (Stammt glaube ich auch aus diesem Forum) Hier kann man auch angeben, wieviel Zahlen man aus einem Bereich haben möchte. ActionScript:
|
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |