jede Zufallszahl nur einmal

Startseite Foren Deutsches LiveCode-Forum jede Zufallszahl nur einmal

Schlagwörter: 

Ansicht von 2 Antwort-Themen
  • Autor
    Beiträge
    • #14521
      wupp66
      Teilnehmer

      Hallo liebe Livecode Gemeinde,
      ich hääte eine Frage bezüglich Zufallszahlen.
      Wenn ich eine Zufallszahl mit Random(90) kreire und möchte jetzt eine bestimmte Anzahl von Zufallszahlen daraus erhalten, ist es dann möglich mit einem einfachen Befehl, die Zufallszahlen so zu beschränken, das sie nicht doppelt vorkommen ?

      Lieben Gruß
      Andreas

    • #14523
      Klaus Major
      Verwalter

      Hallo Andreas,

      nein, einen einfachen Befehl gibt es dafür leider nicht, wir müssen das selber verwalten. In Deinem Fall würde ich es wahrscheinlich so machen:
      1. Eine CR getrennte Liste mit Zahlen von 1 – 90 erstellen

      ...
      repeat with i = 1 to 90
        put i & CR after tListe
      end repeat
      ## Leere Zeile löschen
      delete char -1 of tListe
      ...

      Diese Liste dann in eine globale Variable legen und eine Funktion erstellen, die mit aus dieser Liste zufällige Zahlen liefert und selbige dann aus der Liste löscht:

      global dieRandomListe
      
      function eine_zufallszahl
      
        ## Hier musst Du entscheiden, was passieren soll:
        if dieRandomListe = EMPTY then
          ## Mach was...
        end if
      
        ## Mischen:
        sort lines of dieRandomListe by random(10000) 
      
        ## Liste ist ja gemischt, also können wir "von oben" nehmen:
        put line 1 of dieRandomListe into dieRandomZahl
      
        ## Jetzt der Trick, damit wir keine doppelten Vorkommen der Zufallszahl bekommen:
        delete line 1 of dieRandomListe
      
        ## Nun die Zahl RETURNen
        return dieRandomZahl
      end eine_zufallszahl

      Das geht ins Stackskript, so daß du nun bei bedarf immer iene Zufallszahl zur Hand hast mit:

      ...
      put eine_zufallszahl() into karlheinz
      ...

      Capisce? 🙂

      Gruß

      Klaus

    • #14537
      wupp66
      Teilnehmer

      Vielen Dank Klaus, ich werde es mal so ausprobieren.

      Gruß Andreas

Ansicht von 2 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.