Zufallszahlen
Matt
- javascript
0 uepselon0 Michael Schröpl0 Albert
hallo!
wie kann ich eine reihe von 16 zufallszahlen (zwischen 1 und 16) generieren, in der KEINE zahl doppelt vorkommt?
ist leider dringend!!!!
gruss
matt
Hi,
also ich glaub wenn du n'bissl überlegen würdest wärst du sicher auch drauf gekommen.
mach ne for schleife die du 16 mal durchläufts,
dann berechne deine zufallszahl und schreib sie in ein Array.
ist diese Zahl schon im Array vorhanden, musst du ne neue Berechnen.
groß:
for (16mal)
{
zufall= random()*16
while ( (meinezahlen.join(" ")).search(/zufall/) != -1)
{
zufall = random()*16
}
meinezahlen[i] = zufall;
}
So nach diesem Prinzip etwa
Gruß
uepselon
Hi matt,
wie kann ich eine reihe von 16 zufallszahlen (zwischen 1 und
16) generieren, in der KEINE zahl doppelt vorkommt?
1. Fülle Array1 mit den Zahlen von 1 bis 16
(in beliebiger Reihenfolge - die ist irrelevant)
2. Definiere leeren Array2
3. Schleife mit 16 Durchgängen:
a) würfele eine Zahl von 1 bis (17 - Nr. des Durchgangs) aus
b) adressiere (!) damit das entsprechende Feld in Array1 und
füge dessen Inhalt an das Ende von Array2
c) kopiere den Inhalt des letzten Feldes von Array1 an die
Position, die gerade ausgewürfelt wurde.
Auf diese Weise "ziehst" Du nacheinander 16 "Kugeln" aus einer "Urne", verbrauchst also Deine 16 Zahlen nach und nach.
Insbesondere mußt Du nichts prüfen - jeder Würfelwurf produ-
ziert automatisch ein "legales" Ergebnis, weil alle illegalen
bereits nicht mehr in Array1 vorhanden sind.
Du würfelst ja nicht die Zahlen aus, sondern ihre Positionen
innerhalb von Array1 - was dort an welcher Stelle steht, ist
erstens nicht vorhersehbar (es ändert sich ja nach und nach)
und zweitens völlig egal. (Auch "Mischen" der Anordnung vor
dem Schleifenbeginn bringt keinen Vorteil.)
Der obige Algorithmus ist sprachunabhängig formuliert - konkrete Anpassungen (wie lautet die Array-Untergrenze in Deiner Sprache?) überlasse ich Dir.
ist leider dringend!!!!
Boah, ey - also darauf wäre ich jetzt echt nicht gekommen,
wenn Du Deine Frage schon in einem Forum stellst ... da kann
es echt mehrere Minuten dauern, bis eine Antwort kommt ...
Viele Grüße
Michael
wie kann ich eine reihe von 16 zufallszahlen (zwischen 1 und 16) generieren, in der KEINE zahl doppelt vorkommt?
ganz einfach mit PHP
$zahlen = range(1,16);
srand((double)microtime()*1000000);
shuffle($zahlen);
lässt sich sicher noch verbessern