Zufall

Zufallszahlen mit Seed, berechnet innerhalb des Skripts (kein Roundtrip pro Aufruf). Derselbe Seed liefert dieselben Ergebnisse, sodass ein Skript erneut ausgeführt, rückgängig gemacht und wiederholt oder geteilt werden kann und identisch aussieht. Bevorzuge diese Funktionen gegenüber math.random, das bei jedem Lauf anders ist. Generatoren sind Objekte: Ruf ihre Methoden mit einem Doppelpunkt auf (rng:int(1, 6)). (11 Funktionen)

app.random.hash(x, y, seed?) — rein

Ein zustandsloser Float in [0, 1) aus ganzzahligen Eingaben (ein Integer-Avalanche-Hash): dasselbe (x, y, seed) liefert immer denselben Wert, in beliebiger Reihenfolge. Für Rauschen pro Pixel oder Dithering ohne Generator.

  • x (number) — Ganzzahl (abgerundet).
  • y (number) — Ganzzahl (abgerundet).
  • seed (number, optional) — Standard 0.

Gibt zurück (number): Ein Float, 0 <= x < 1.

app.random.new(seed) — rein

Erzeugt einen Zufallsgenerator mit Seed (mulberry32, derselbe Algorithmus, den Sprühen und Durchmischen des Editors verwenden). Derselbe Seed liefert immer dieselbe Folge. Bevorzuge ihn gegenüber math.random, das bei jedem Lauf anders ist. Verwende die Methoden mit einem Doppelpunkt: local rng = app.random.new(app.config.seed); rng:int(1, 6).

  • seed (number) — Eine Ganzzahl 0-4294967295. Floats werden abgerundet; alles andere wird auf 32 Bit reduziert.

Gibt zurück (table): Ein Generatorobjekt; ruf seine Methoden mit einem Doppelpunkt auf.

app.random.seed() — rein

Ein frischer zufälliger Ganzzahl-Seed, 0-4294967295. NICHT deterministisch: Er ist bei jedem Lauf anders, also gib ihn aus oder speichere ihn, wenn du das Ergebnis reproduzieren willst. Verwende ihn, wenn das Seed-Feld leer bleibt: app.random.new(app.config.seed or app.random.seed()).

Gibt zurück (number): Eine Ganzzahl 0-4294967295.

rng:chance(p) — rein

true mit der Wahrscheinlichkeit p.

  • p (number) — Wahrscheinlichkeit 0-1.

Gibt zurück (boolean): true oder false.

rng:fork(label) — rein

Ein unabhängiger Kindgenerator, deterministisch aus dem aktuellen Zustand dieses Generators und dem Label abgeleitet, OHNE diesen weiterzuschalten. Gib jeder Funktion ihren eigenen Fork (rng:fork("leaves")), damit das Hinzufügen einer Funktion nicht jeden späteren Wurf ändert. Zweimaliges Forken an derselben Stelle mit demselben Label liefert identische Kinder.

  • label (string) — Ein String oder eine Zahl, die das Kind benennt.

Gibt zurück (table): Ein Generatorobjekt; ruf seine Methoden mit einem Doppelpunkt auf.

rng:int(lo, hi) — rein

Eine zufällige Ganzzahl von lo bis hi, beide eingeschlossen.

  • lo (number) — Kleinstes Ergebnis (abgerundet).
  • hi (number) — Größtes Ergebnis, eingeschlossen (abgerundet); mindestens lo.

Gibt zurück (number): Eine Ganzzahl, lo <= x <= hi.

rng:next() — rein

Der nächste Float in [0, 1).

Gibt zurück (number): Ein Float, 0 <= x < 1.

rng:normal(mean?, sd?) — rein

Ein normalverteilter Float (Box-Muller). Verbraucht zwei Würfe pro Aufruf.

  • mean (number, optional) — Standard 0.
  • sd (number, optional) — Standardabweichung; Standard 1.

Gibt zurück (number): Ein Float um mean.

rng:pick(list) — rein

Ein zufälliges Element der Liste; nil bei einer leeren Liste (und der Generator wird nicht weitergeschaltet).

  • list (table) — Eine Liste (1..#list).

Gibt zurück (table): Ein Element der Liste oder nil.

rng:range(a, b) — rein

Ein zufälliger Float von a bis ausschließlich b.

  • a (number)
  • b (number)

Gibt zurück (number): Ein Float in [a, b).

rng:shuffle(list) — rein

Eine neue Liste mit denselben Elementen in zufälliger Reihenfolge (Fisher-Yates). Die Eingabeliste wird nicht verändert.

  • list (table) — Eine Liste (1..#list).

Gibt zurück (table): Eine neue gemischte Liste.

Als Markdown: random.md.