Zufallsgenerator der besser mischt... [Flash 10]
| 26.04.2009, 18:45 | | Beiträge: 140 Registriert: Jul 2007
| Zufallsgenerator der besser mischt... Hi,
Ich hab einen simplen Zufallsgenerator gebastelt, folgende function();
ActionScript:1 2 3 4 5 6 | var nr:Number = zufallgeneratorflv();
function zufallgeneratorflv() {
var zufallsvideoindex = Math.floor(Math.random()*(29));
return zufallsvideoindex;
}
|
doch irgendwie ist der mir zu simple, also nicht zu "zufällig" wie ich es mir erhoffe. Nehmen wir mal an (als Beispiel!) Ich hab 29 Nummmern! Wenn ich den Zufallsgenerator mit random der Klasse Math aufrufe (was ja die bessere Version sein sollte?) kommen z.B. 2 mal hintereinader die selbe Zahl. Oder jede 4. oder 5. Zahl ist die selbe anstatt Er mal eine völlig neue nehmen sollte die Er es nicht genommen hat. Ist es überhaupt möglich, per ActionScript 2.0, eine bessere Mischung hin zukriegen? So das AS zumindest erst ab 10. Zahl wieder die Selbe nehmen darf??
Bissel kompliziert, kann mir da jemand einen Tipp geben?
gruß, dfm.
Ps. Als Anhang hab ich was vorbereitet! | Geändert von deflashoman am 26.04.09 um 18:47 Uhr
| |
|
| 26.04.2009, 21:14 | Re1 | Beiträge: 571 Wohnort: LE Registriert: Apr 2006
| hmmm ...
also man kann es erzwingen, aber eigentlich ist das, was du da stehen hast, die beste Zufallsverteilung, die du haben kannst ...
ActionScript:1 2 3 4 5 6 7 | var zahlen:Array = [];
function zufallgeneratorflv() {
if (zahlen.length == 0) {
for (var i:Number = 0; i<29; i++) zahlen.push(i);
}
return zahlen.splice(Math.random()*zahlen.length,1)[0];
}
|
wenn das Array leer ist, kann natürlich theoretisch die selbe Zahl zwei mal kommen, aber das passiert dann wirklich eher selten ...
greetz
back2dosgreetz
back2dos | Geändert von BackToDos am 26.04.09 um 21:14 Uhr
| |
|
| 26.04.2009, 23:13 | Re2 | Beiträge: 140 Registriert: Jul 2007
Themenautor/in
| Hey, danke für deine Antwort.
Sieht gut aus und funktioniert auch perfekt! Eine if Schleife kam mir auch in den Sinn, doch wie war mir nicht klar.
Nur hätt ich ein paar Fragen zu deinem Gedankengang:
Warum wird hier die Array.Länge auf Absolut gleich 0 gesetzt?
ActionScript:| 1 | return zahlen.splice(Math.random()*zahlen.length,1)[0];
|
Und hier hast du Array gesplittet und nach der Array-Länge komma Eins geschrieben?
Wenn du mir nur die 2-3 Sachen erläuterst, weiß ich dann genau was ich da abschreibe :)
gruß, dfm. | |
| | | nicht sichtbar bei eingeloggten Mitgliedern | 
|
| | Themen Ähnliche Beiträge zum Thema | 09.05.2011 - QuiJinn 07.09.2010 - fabi22 12.10.2010 - Lars.Hakins 26.04.2010 - Benjamin Burger |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|