Matt: Zufallszahlen

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

  1. 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

  2. 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

  3. 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