Aleatorio
Números aleatorios con semilla, calculados dentro del script (sin ida y vuelta por cada llamada). La misma semilla da los mismos resultados, así que un script se puede volver a ejecutar, deshacer y rehacer, o compartir, y verse idéntico. Prefiérelos a math.random, que cambia en cada ejecución. Los generadores son objetos: llama a sus métodos con dos puntos (rng:int(1, 6)). (11 funciones)
app.random.hash(x, y, seed?) — pura
Un número de coma flotante sin estado en [0, 1) a partir de entradas enteras (un hash de avalancha de enteros): el mismo (x, y, seed) siempre da el mismo valor, en cualquier orden. Para ruido por píxel o tramado sin un generador.
x(number) — Entero (se redondea hacia abajo).y(number) — Entero (se redondea hacia abajo).seed(number, opcional) — Por defecto 0.
Devuelve (number): Un número de coma flotante, 0 <= x < 1.
app.random.new(seed) — pura
Crea un generador aleatorio con semilla (mulberry32, el mismo algoritmo que usan el aerógrafo y la mezcla del editor). La misma semilla siempre da la misma secuencia. Prefiérelo a math.random, que es distinto en cada ejecución. Usa los métodos con dos puntos: local rng = app.random.new(app.config.seed); rng:int(1, 6).
seed(number) — Un entero 0-4294967295. Los decimales se redondean hacia abajo; cualquier otro valor se reduce a 32 bits.
Devuelve (table): Un objeto generador; llama a sus métodos con dos puntos.
app.random.seed() — pura
Una semilla entera aleatoria nueva, 0-4294967295. NO es determinista: cambia en cada ejecución, así que imprímela o guárdala si quieres reproducir el resultado. Úsala cuando el usuario deje vacío el campo de semilla: app.random.new(app.config.seed or app.random.seed()).
Devuelve (number): Un entero 0-4294967295.
rng:chance(p) — pura
true con probabilidad p.
p(number) — Probabilidad 0-1.
Devuelve (boolean): true o false.
rng:fork(label) — pura
Un generador hijo independiente derivado de forma determinista del estado actual de este generador y de la etiqueta, SIN hacer avanzar a este. Dale a cada función su propia bifurcación (rng:fork("leaves")) para que añadir una función no cambie todas las tiradas posteriores. Bifurcar dos veces en el mismo punto con la misma etiqueta da hijos idénticos.
label(string) — Una cadena o un número que nombra al hijo.
Devuelve (table): Un objeto generador; llama a sus métodos con dos puntos.
rng:int(lo, hi) — pura
Un entero aleatorio de lo a hi, ambos incluidos.
lo(number) — El resultado más pequeño (se redondea hacia abajo).hi(number) — El resultado más grande, incluido (se redondea hacia abajo); al menos lo.
Devuelve (number): Un entero, lo <= x <= hi.
rng:next() — pura
El siguiente número de coma flotante en [0, 1).
Devuelve (number): Un número de coma flotante, 0 <= x < 1.
rng:normal(mean?, sd?) — pura
Un número de coma flotante con distribución normal (Box-Muller). Usa dos tiradas por llamada.
mean(number, opcional) — Por defecto 0.sd(number, opcional) — Desviación estándar; por defecto 1.
Devuelve (number): Un número de coma flotante alrededor de mean.
rng:pick(list) — pura
Un elemento aleatorio de la lista; nil para una lista vacía (y el generador no avanza).
list(table) — Una lista (1..#list).
Devuelve (table): Un elemento de la lista, o nil.
rng:range(a, b) — pura
Un número de coma flotante aleatorio desde a hasta b (sin incluirlo).
a(number)b(number)
Devuelve (number): Un número de coma flotante en [a, b).
rng:shuffle(list) — pura
Una lista nueva con los mismos elementos en orden aleatorio (Fisher-Yates). La lista de entrada no se modifica.
list(table) — Una lista (1..#list).
Devuelve (table): Una lista nueva mezclada.
En Markdown: random.md.