# API di scripting Lua di pxstud.io — Casuale

> Parte del riferimento di scripting Lua di pxstud.io, la cui panoramica (https://pxstud.io/it/docs/scripting.md) ne spiega le convenzioni. I gruppi di opzioni e i tipi a cui rimanda sono in https://pxstud.io/it/docs/scripting/option-groups.md e https://pxstud.io/it/docs/scripting/types.md. Tutto in un unico file (in inglese): https://pxstud.io/llms-full.txt. L'indice dell'intero sito (in inglese): https://pxstud.io/llms.txt.

### 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)).

#### `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.
