🎲

Generador de Números Aleatorios

Genera números verdaderamente aleatorios con rangos personalizados — con aleatoriedad criptográfica.

🎲

Define tu rango y pulsa Generar.

Usa el generador criptográfico de tu navegador — genuinamente impredecible y sin sesgo.

La mayoría de los generadores de números aleatorios de la web no son lo bastante aleatorios para nada que importe. Usan `Math.random()`, que es rápido, cómodo y completamente predecible para quien entienda el algoritmo: con suficientes salidas, sus valores futuros pueden reconstruirse. Eso está bien para barajar una lista de reproducción y descalifica para un sorteo. Este generador usa `crypto.getRandomValues()`, la fuente criptográficamente segura del navegador, y maneja correctamente el problema del sesgo del módulo que distorsiona silenciosamente a la mayoría de las implementaciones ingenuas. Si eliges un ganador, generas una apuesta o haces algo donde la equidad sea comprobable, la distinción lo es todo.

Cómo funciona el generador

Fija tu mínimo y máximo, elige cuántos números quieres y decide si se permiten duplicados. El generador extrae entropía de la fuente aleatoria criptográfica de tu navegador y la mapea a tu rango usando muestreo por rechazo: un método que descarta los valores que caen fuera de un múltiplo limpio del rango en lugar de doblarlos hacia dentro. Ese paso de rechazo es lo que preserva la uniformidad, y es exactamente el paso que la mayoría de las implementaciones se salta.

El método

Ingenuo (sesgado): n = Math.floor(Math.random() * rango) + min Sin sesgo (muestreo por rechazo): limite = floor(2³² ÷ rango) × rango repetir: x = valor aleatorio criptográfico de 32 bits hasta que x < limite n = (x mod rango) + min

El sesgo es lo bastante sutil como para pasarse por alto casi siempre. Si tomas un valor aleatorio de 32 bits y aplicas módulo 3, el rango no divide de forma exacta 2³², así que los primeros valores del rango aparecen algo más a menudo que los últimos. Para una tirada de dado el desvío es invisible. Para una lotería sorteada millones de veces, es medible y explotable. El muestreo por rechazo lo arregla desechando los valores que causarían el desequilibrio y volviendo a extraer.

Lo que conviene saber sobre la aleatoriedad

  • 1`Math.random()` no sirve para nada consecuente. Es un generador pseudoaleatorio sembrado desde una fuente predecible, y los navegadores no dan ninguna garantía sobre su calidad. Se ha demostrado repetidamente que observar un puñado de salidas permite reconstruir el estado interno y predecir todos los valores futuros.
  • 2La aleatoriedad real parece menos aleatoria de lo que la gente espera. Las secuencias genuinas contienen rachas: seis caras seguidas aparecen en cerca del 1,6% de las series de 100 lanzamientos. Cuando la gente fabrica datos «aleatorios» a mano evita estos grupos, que es precisamente cómo los investigadores de fraude detectan resultados inventados.
  • 3Para sorteos públicos, documenta el proceso antes de sortear. Un método verificable —anunciar de antemano el rango, la marca de tiempo y la fuente de la semilla— es lo que hace defendible un resultado. «Usamos un generador aleatorio» no es prueba de nada; los participantes no pueden auditar una afirmación.
  • 4Muestrear sin reemplazo significa que cada extracción cambia las probabilidades. Elegir 6 números de 49 sin duplicados es un problema de probabilidad distinto de 6 extracciones independientes. La distinción importa para loterías y rifas, y este generador maneja ambos casos correctamente según tu ajuste de duplicados.
  • 5Los dados, las monedas y las cartas son fuentes físicas de aleatoriedad y sorprendentemente buenas. Un dado bien fabricado es genuinamente impredecible de una forma que un generador de software mal sembrado no lo es. Los casinos siguen usando barajado físico exactamente por esa razón.

Preguntas frecuentes

¿Son estos números verdaderamente aleatorios?

Son pseudoaleatorios criptográficamente seguros, la garantía más fuerte disponible en un navegador. El generador extrae de `crypto.getRandomValues()`, sembrado con entropía del sistema operativo: fuentes como los tiempos del hardware y el jitter de interrupciones. A diferencia de `Math.random()`, sus salidas no pueden predecirse a partir de valores previos. Para cualquier propósito práctico, incluidos los sorteos, es suficiente.

¿Qué es el sesgo del módulo y por qué importa?

Cuando mapeas un valor aleatorio a un rango que no divide de forma exacta el tamaño de la fuente, algunos resultados se vuelven algo más probables que otros. Tomar un valor de 32 bits módulo 3 hace que los números bajos salgan marginalmente más. Es invisible en uso casual pero real y medible a escala. Este generador lo elimina con muestreo por rechazo, descartando los valores que caerían en el resto desigual.

¿Puedo usarlo para un sorteo o un regalo?

Sí: la fuente criptográfica y el mapeo sin sesgo hacen que los resultados sean genuinamente justos. Para rendir cuentas públicamente, anuncia tu método de antemano: indica el rango, el número de ganadores y la hora del sorteo. Ser justo y poder demostrarlo son cosas distintas, y para un sorteo disputado necesitas la segunda, que ningún generador puede aportar por sí solo.

¿Por qué sale el mismo número dos veces seguidas?

Porque eso es lo que hace la aleatoriedad. Cada extracción es independiente, así que con duplicados permitidos, las repeticiones son esperables: en 10 extracciones del 1 al 10 hay cerca de un 65% de probabilidad de al menos un duplicado, lo que sorprende a casi todo el mundo. Un generador que evitara repeticiones para parecer más aleatorio sería medible­mente menos aleatorio. Si necesitas valores únicos, desactiva los duplicados.

¿Se envían mis datos a algún sitio?

No. La generación ocurre enteramente en tu navegador mediante la API criptográfica incorporada, y no se transmite ni almacena ningún número, ajuste ni resultado. Desconectarte de internet no afecta al generador, porque no hay servidor implicado en ninguna fase.