Antwort auf: jede Zufallszahl nur einmal

Startseite Foren Deutsches LiveCode-Forum jede Zufallszahl nur einmal Antwort auf: jede Zufallszahl nur einmal

#14523
Klaus Major
Administrator

    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