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.