CalcOpenly
Español

Generador de números pseudoaleatorios con semilla

Genera números a partir de una semilla: enteros en un intervalo, decimales, sorteos sin repetición y tiradas de dados, reproducibles con xoshiro256**.

Redactado con herramientas de redacción con IAActualizado Ejemplos verificados: 6

Extracción sin reemplazo, como los números de una lotería.
La misma semilla da los mismos números. Cámbiala para obtener otra secuencia. Este cálculo no hace una extracción nueva sin semilla mediante la fuente aleatoria segura del navegador.
Probar
Resultados
10, 13, 19, 87, 95, 37, 73, 40, 32, 34
Resultados: 10, 13, 19, 87, 95, 37, 73, 40, 32, 34
Suma
440
Media
44
Mínimo
10
Máximo
95

Estos 10 resultados proceden de la semilla «2026». La misma semilla y configuración reproducen la misma lista. Esto permite comprobar una simulación, pero no demuestra que un sorteo haya sido imparcial. Usa estos valores pseudoaleatorios para aprender y simular, no para contraseñas, claves criptográficas ni para adjudicar premios.

Cada extracción, en orden

#1: 1010#1#2: 1313#2#3: 1919#3#4: 8787#4#5: 9595#5#6: 3737#6#7: 7373#7#8: 4040#8#9: 3232#9#10: 3434#10
Cómo se calcula S
  1. Semilla

    La semilla 2026 se usa directamente como valor inicial de 64 bits.

  2. Estado del generador

    SplitMix64, iniciado con la semilla, rellena las cuatro palabras de 64 bits de xoshiro256**, que después produce una salida de 64 bits por paso.

  3. Asignar cada salida al intervalo sin sesgo

    m=100,x<⌊264m⌋m,k=1+(x mod m)m = 100,\quad x < \left\lfloor \frac{2^{64}}{m} \right\rfloor m,\quad k = 1 + (x \bmod m)

    Se permiten valores repetidos. Rechazar la franja superior de salidas evita el sesgo del módulo. Los resultados dependen únicamente de la semilla; este cálculo no incorpora entropía nueva.

  4. Resumen

    ∑=440,vˉ=44\sum = 440,\quad \bar v = 44

Acerca de Generador de números pseudoaleatorios con semilla

En la fórmula, a y b son los límites enteros y solo se aceptan salidas x inferiores al límite indicado. Los números proceden de xoshiro256**, un generador pseudoaleatorio de 64 bits de Blackman y Vigna con periodo 2²⁵⁶ − 1. SplitMix64 obtiene su estado inicial a partir de la semilla. Cada salida x de 64 bits se convierte en min + (x mod m), donde m es la cantidad de valores posibles, después de descartar una pequeña franja superior del intervalo de 64 bits para dar la misma probabilidad a cada valor. Los decimales se generan como cantidades enteras de pasos de 10⁻ᵈ y después se dividen por la escala correspondiente.

La configuración inicial genera 10 enteros entre 1 y 100 con semilla 2026: 10, 13, 19, 87, 95, 37, 73, 40, 32, 34. Cualquiera que introduzca la misma semilla y configuración obtiene la misma lista, lo que permite comprobar después una simulación de sorteo, una muestra de clase o un experimento.

Una lista determinada por una semilla es predecible para quien la conozca o adivine. La reproducibilidad por sí sola no demuestra imparcialidad: alguien puede probar semillas hasta obtener un resultado que le convenga. Úsala para aprender y simular, no para contraseñas, claves de cifrado ni para adjudicar premios.

Cómo elegir un número aleatorio entre dos valores

Se cuentan los valores posibles, m = b − a + 1, y cada salida aleatoria x de 64 bits se transforma en a + (x mod m), descartando las raras salidas que favorecerían a los números pequeños. Para el intervalo de 1 a 100, m = 100, y diez extracciones con la semilla 2026 dan 10, 13, 19, 87, 95, 37, 73, 40, 32, 34, que suman 440. Es lo que muestra el generador con sus valores iniciales.

Los dos extremos del intervalo están incluidos y todos los valores son igual de probables. Una sola extracción de 1 a 10 con la misma semilla da 10.

Misma semilla, mismos números

Son números pseudoaleatorios: un cálculo fijo convierte un valor inicial, la semilla, en una secuencia de apariencia aleatoria. La misma semilla con los mismos ajustes da la misma lista en cualquier dispositivo, de modo que una muestra hecha en clase o una simulación pueden comprobarse después.

Para obtener otra extracción hay que cambiar la semilla. Recargar la página con la misma semilla repite la misma lista.

Una semilla entera entre 0 y 18 446 744 073 709 551 615 (2⁶⁴ − 1) se usa directamente. Cualquier otro texto se resume con la función hash FNV-1a de 64 bits, documentada en el RFC 9923, después de quitar los espacios de los extremos.

Por eso « 2026 » da la misma lista que 2026, mientras que Hello y hello dan listas distintas. Para compartir una extracción reproducible, indica la semilla junto con el intervalo, la cantidad y las opciones.

Por qué el resto simple está sesgado

Tomar solo x mod m favorece algunos valores siempre que m no divida el número de salidas posibles. Si se reparte un byte, de 0 a 255, entre 1 y 100 de esa forma, los valores del 1 al 56 tienen cada uno una probabilidad de 3/256 (1,17 %), y los del 57 al 100, solo de 2/256 (0,78 %).

La solución es el rechazo: se descarta cualquier salida igual o superior a ⌊2⁶⁴ ÷ m⌋ × m y se vuelve a extraer. Para m = 100 se desechan solo 16 de las 2⁶⁴ salidas posibles, y todos los valores pasan a ser exactamente equiprobables.

Extracciones sin repetición

Los sorteos de tipo lotería son muestreos sin reemplazo: un valor que ya ha salido se vuelve a extraer hasta completar la cantidad pedida. Seis números de 1 a 49 con la semilla 2026, ordenados, son 11, 12, 18, 37, 40, 45.

Cada uno de los C(49, 6) = 13 983 816 conjuntos posibles es igual de probable, incluido 1, 2, 3, 4, 5, 6. Ordenar solo cambia el orden de la lista, nunca sus valores ni su suma.

Pedir todos los valores de un intervalo equivale a barajarlo: los cinco valores de 1 a 5 sin repetición salen como 5, 3, 4, 2, 1. Un intervalo no puede aportar más valores distintos de los que contiene, así que seis números distintos de 1 a 5 es imposible y el generador lo rechaza.

Ejemplos de extracciones y sus sumas

Todas las filas usan la semilla 2026, salvo 3d6, que usa hello. Los valores son enteros salvo que se indiquen decimales, y se permiten repeticiones salvo que se diga lo contrario. Las listas se comprobaron con las rutinas en C publicadas por los autores del generador.

AjustesResultados, en ordenSuma
1–100; 10 extracciones10, 13, 19, 87, 95, 37, 73, 40, 32, 34440
1–10; 1 extracción1010
1–49; 6 extracciones; sin repetición; ordenados11, 12, 18, 37, 40, 45163
1–5; 5 extracciones; sin repetición5, 3, 4, 2, 115
1–5; 5 extracciones; sin repetición; ordenados1, 2, 3, 4, 515
0–1; 5 extracciones; 3 decimales0,683; 0,143; 0,793; 0,253; 0,3752,247
-0,025–0,025; 5 extracciones; 2 decimales0,02; 0,00; 0,01; -0,01; 0,020,04
-0,025–0,025; 5 extracciones; 2 decimales; sin repetición; ordenados-0,02; -0,01; 0,00; 0,01; 0,020,00
0,101–0,119; 3 extracciones; 2 decimales0,11; 0,11; 0,110,33
0–0,000000000005; 6 extracciones; 12 decimales; sin repetición; ordenados0,000000000000; 0,000000000001; 0,000000000002; 0,000000000003; 0,000000000004; 0,0000000000051,5E-11
3d6; semilla hello1, 6, 18
2d2010, 1323
7–7; 3 extracciones7, 7, 721

En la tabla, los decimales llevan coma y se separan con punto y coma. El campo de resultados del generador escribe la misma lista con punto decimal y comas, por ejemplo 0.683, 0.143, 0.793, 0.253, 0.375.

Decimales aleatorios

Los decimales salen de una cuadrícula. Con d decimales, los valores posibles son los múltiplos de 10⁻ᵈ que quedan dentro de los límites; así, con 2 decimales, el intervalo de −0,025 a 0,025 solo admite −0,02; −0,01; 0,00; 0,01 y 0,02.

De 0,101 a 0,119 con 2 decimales, 0,11 es el único punto de la cuadrícula, y por eso esa fila lo repite. De 0,101 a 0,109 no hay ninguno; añade decimales o amplía el intervalo.

Todos los puntos de la cuadrícula son igual de probables, de modo que las extracciones siguen una distribución uniforme, no una campana. Los ceros finales muestran la precisión elegida: 0,00 con 2 decimales es un valor extraído, no un hueco.

Tiradas de dados

Cada dado da un número entero entre 1 y su número de caras. Dos dados de veinte caras (2d20) con la semilla 2026 sacan 10 y 13, un total de 23. Tres dados de seis caras con la semilla hello sacan 1, 6 y 1, un total de 8.

Para la probabilidad teórica de un total, como sacar 7 con dos dados, usa la calculadora de probabilidades con dados, monedas y cartas.

¿Es suficientemente aleatorio?

El generador es xoshiro256**, con su estado inicial rellenado a partir de la semilla mediante SplitMix64. Su periodo es 2²⁵⁶ − 1, y sus autores publican el algoritmo y el código C de referencia. Sirve para juegos, muestreo y simulación.

No sirve para secretos. Cualquiera que conozca o adivine la semilla puede reconstruir la lista, así que las contraseñas y las claves de cifrado necesitan una fuente criptográficamente segura, como un gestor de contraseñas o la función crypto.getRandomValues del navegador.

La reproducibilidad tampoco demuestra que un sorteo haya sido limpio, porque alguien podría probar semillas hasta obtener el resultado que prefiere. No uses una lista con semilla para adjudicar premios.

Límites de intervalo y cantidad

  • De 1 a 1000 números, o de 1 a 1000 dados de 2 a 1000 caras cada uno.
  • De 1 a 12 decimales, y como máximo 2⁶³ valores posibles en un mismo intervalo.
  • Límites enteros para los números enteros, con el límite inferior no mayor que el superior.

Ejemplos resueltos

Diez enteros entre 1 y 100, semilla 2026 (valores iniciales)

Generar
Enteros
De
1
A
100
Cantidad
10
Semilla
2026
Resultados
10, 13, 19, 87, 95, 37, 73, 40, 32, 34
Suma
440
Mínimo
10
Máximo
95

Fuente de comprobación: Cálculo independiente

Lotería: 6 entre 49, sin repetición y ordenados

Generar
Enteros
De
1
A
49
Cantidad
6
Sin repetición
sí
Ordenar los resultados
sí
Semilla
2026
Resultados
11, 12, 18, 37, 40, 45
Suma
163

Fuente de comprobación: Cálculo independiente

Cinco decimales en [0, 1] con 3 cifras decimales

Generar
Decimales
De
0
A
1
Cantidad
5
Decimales
3
Semilla
2026
Resultados
0.683, 0.143, 0.793, 0.253, 0.375
Suma
2,247

Fuente de comprobación: extracción entera en [0, 1000], dividida entre 10³

3d6 con una semilla de texto

Generar
Tiradas de dados
Número de dados
3
Caras por dado
6
Semilla
hello
Resultados
1, 6, 1
Suma
8

Fuente de comprobación: la semilla de texto da FNV-1a de 64 bits 0xa430d84680aabd0b, el hash FNV-1a publicado para «hello»

Preguntas

¿Estos números son verdaderamente aleatorios?

No, son pseudoaleatorios: un cálculo fijo transforma la semilla en una secuencia que parece aleatoria, pero se repite exactamente con la misma semilla. Esto sirve para juegos, muestreo y simulación. Las contraseñas y claves requieren un generador criptográficamente seguro, como crypto.getRandomValues del navegador o un generador determinista de bits aleatorios conforme a NIST SP 800-90A, cuyas salidas no puedan predecirse observando las anteriores.

¿Para qué sirve la semilla?

La semilla fija el estado inicial del generador, por lo que la misma semilla y configuración siempre producen los mismos números en cualquier dispositivo. Una semilla entera entre 0 y 18 446 744 073 709 551 615 (2⁶⁴ − 1) se usa directamente; cualquier otro texto se transforma con FNV-1a de 64 bits. Por ejemplo, 3 dados de seis caras con la semilla hello siempre dan 1, 6, 1.

¿Cómo se generan números de lotería sin repetición?

Fija el intervalo de 1 a 49, la cantidad en 6 y activa «Sin repetición». Si aparece un duplicado, se genera otro valor hasta tener 6 distintos. Cada uno de los C(49, 6) = 13 983 816 conjuntos posibles tiene la misma probabilidad, incluido 1, 2, 3, 4, 5, 6. Activa «Ordenar los resultados» para mostrarlos ordenados, como en los boletos de lotería.

¿Por qué no basta con tomar el módulo de la salida respecto al tamaño del intervalo?

Porque el resto simple favorece algunos valores cuando el tamaño del intervalo no divide la cantidad de salidas posibles. Un generador de juguete con 8 salidas (0–7), reducido a 3 valores mediante x mod 3, da 0, 1, 2, 0, 1, 2, 0, 1: dos valores tienen probabilidad 3/8 y uno, 2/8. Rechazar las salidas 6 y 7 hace que cada valor tenga probabilidad exacta 1/3. Esta calculadora aplica la misma regla a sus 2⁶⁴ salidas.

Acerca de esta calculadora

v=a+(x mod m),m=b−a+1x<⌊264/m⌋m\begin{gathered} v = a + (x \bmod m),\quad m = b - a + 1 \\ x < \left\lfloor 2^{64}/m \right\rfloor m \end{gathered}

Fuentes

  1. Blackman & Vigna, Scrambled linear pseudorandom number generators (xoshiro256**), ACM TOMS 47(4), 2021
  2. Steele, Lea & Flood, Fast splittable pseudorandom number generators (SplitMix64), OOPSLA 2014
  3. Fowler–Noll–Vo hash, FNV-1a 64-bit parameters (IETF draft-eastlake-fnv)

Verificado con las referencias

Esta calculadora incluye 6 ejemplos resueltos con respuestas de fuentes independientes. Forman parte del conjunto de pruebas y también puedes ejecutarlos aquí.

Pon esta calculadora en tu sitio

Pega esto donde quieras que aparezca la calculadora. Su uso es gratuito, se mantiene al día con las correcciones que hacemos aquí y el crédito que aparece debajo enlaza con la versión completa, para que tus lectores puedan consultarla.

Altura
Vista previa de la inserción

Conserva el crédito. Es la única condición y es lo que mantiene gratuitas estas calculadoras.