Casuale
Numeri casuali con seme, calcolati all'interno dello script (nessun viaggio di andata e ritorno per chiamata). Lo stesso seme dà gli stessi risultati, quindi uno script può essere rieseguito, annullato e ripetuto, o condiviso, e produrre lo stesso aspetto. Preferiscile a math.random, che cambia a ogni esecuzione. I generatori sono oggetti: chiama i loro metodi con i due punti (rng:int(1, 6)). (11 funzioni)
app.random.hash(x, y, seed?) — pura
Un float senza stato in [0, 1) ottenuto da input interi (un hash intero a valanga): gli stessi (x, y, seed) danno sempre lo stesso valore, in qualsiasi ordine. Per rumore per pixel o dithering senza un generatore.
x(number) — Intero (arrotondato per difetto).y(number) — Intero (arrotondato per difetto).seed(number, facoltativo) — Predefinito 0.
Restituisce (number): Un float, 0 <= x < 1.
app.random.new(seed) — pura
Crea un generatore casuale con seme (mulberry32, lo stesso algoritmo usato da spray e jumble dell'editor). Lo stesso seme dà sempre la stessa sequenza. Preferiscilo a math.random, che è diverso a ogni esecuzione. Usa i metodi con i due punti: local rng = app.random.new(app.config.seed); rng:int(1, 6).
seed(number) — Un intero 0-4294967295. I float vengono arrotondati per difetto; qualsiasi altro valore viene ridotto a 32 bit.
Restituisce (table): Un oggetto generatore; chiama i suoi metodi con i due punti.
app.random.seed() — pura
Un nuovo seme intero casuale, 0-4294967295. NON deterministico: cambia a ogni esecuzione, quindi stampalo o salvalo se vuoi riprodurre il risultato. Usalo quando l'utente lascia vuoto il campo del seme: app.random.new(app.config.seed or app.random.seed()).
Restituisce (number): Un intero 0-4294967295.
rng:chance(p) — pura
true con probabilità p.
p(number) — Probabilità 0-1.
Restituisce (boolean): true o false.
rng:fork(label) — pura
Un generatore figlio indipendente derivato in modo deterministico dallo stato attuale di questo generatore e dall'etichetta, SENZA far avanzare questo. Dai a ogni funzionalità il proprio fork (rng:fork("leaves")), così aggiungerne una non cambia tutti i lanci successivi. Fare un fork due volte nello stesso punto con la stessa etichetta dà figli identici.
label(string) — Una stringa o un numero che dà un nome al figlio.
Restituisce (table): Un oggetto generatore; chiama i suoi metodi con i due punti.
rng:int(lo, hi) — pura
Un intero casuale da lo a hi, entrambi inclusi.
lo(number) — Risultato minimo (arrotondato per difetto).hi(number) — Risultato massimo, incluso (arrotondato per difetto); almeno lo.
Restituisce (number): Un intero, lo <= x <= hi.
rng:next() — pura
Il float successivo in [0, 1).
Restituisce (number): Un float, 0 <= x < 1.
rng:normal(mean?, sd?) — pura
Un float con distribuzione normale (Box-Muller). Usa due lanci per chiamata.
mean(number, facoltativo) — Predefinito 0.sd(number, facoltativo) — Deviazione standard; predefinito 1.
Restituisce (number): Un float intorno a mean.
rng:pick(list) — pura
Un elemento casuale della lista; nil per una lista vuota (e il generatore non avanza).
list(table) — Una lista (1..#list).
Restituisce (table): Un elemento della lista, oppure nil.
rng:range(a, b) — pura
Un float casuale da a fino a b (escluso).
a(number)b(number)
Restituisce (number): Un float in [a, b).
rng:shuffle(list) — pura
Una nuova lista con gli stessi elementi in ordine casuale (Fisher-Yates). La lista in ingresso non viene modificata.
list(table) — Una lista (1..#list).
Restituisce (table): Una nuova lista rimescolata.
In Markdown: random.md.