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.