Elige la forma del sorteo
La elección depende sobre todo de cómo tiene que verse el resultado para quienes lo están observando.
Un número o un conjunto de números — generador de números aleatorios para un rango que definas, números de lotería para los quince juegos con reglas fijas, dados cuando necesitas notación de dados y modificadores en lugar de un rango plano.
Un ganador entre una lista — selector de nombres cuando quieres la respuesta, gira la rueda cuando hay público mirando y el drama es el objetivo.
Un sí o un no — lanzar una moneda.
Todos repartidos en grupos — generador de equipos, que reparte en round-robin de forma que 7 personas en 3 grupos salga 3/2/2 en lugar de volcar el resto en el último grupo.
Un juego que se desarrolla en el tiempo — llamador de bingo, 75, 90 o 99 bolas, llevado desde una sola pantalla.
Comprobar el sorteo de otra persona — el verificador de sorteos, que es la única herramienta de aquí que no genera nada.
La parte que hace diferente a esta categoría
Cualquier sitio puede producir un número aleatorio. El problema difícil es producir uno que un participante escéptico acepte después, y eso es una cadena que recorre todas las herramientas de aquí, no una función de una sola de ellas.
Funciona así. Ejecutas el sorteo con una semilla — un valor que eliges tú, o que elige la herramienta y te muestra. La semilla hace el sorteo reproducible: cualquiera que tenga la semilla y la misma lista obtiene el mismo resultado, siempre. Por sí sola eso no basta, porque un organizador podría hacer sorteos con semillas distintas hasta que uno saliera convenientemente y publicar solo esa semilla.
Así que un sorteo también recibe una huella digital de la lista contra la que se ejecutó. Publicar la semilla y la huella digital antes del sorteo te compromete tanto con los participantes como con el método. Después, cualquiera puede pegar el certificado en el verificador, que recalcula el resultado y comprueba que la semilla, la lista y el resultado coinciden todos. Cambia un nombre, añade una entrada tardía, o intercambia al ganador, y la huella digital deja de coincidir.
Esto no demuestra que el organizador sea honesto. Demuestra que ese sorteo, sobre esa lista, produjo ese resultado — que es la parte que antes era imposible de comprobar para cualquier otra persona.
Cuándo no quieres una semilla
Deja la semilla vacía y el sorteo usará crypto.getRandomValues() en su
lugar: la entropía de tu sistema operativo, no una secuencia reproducible.
Esa es la opción correcta para cualquier caso donde la reproducibilidad sería
una debilidad y no una ventaja — elegir una contraseña, repartir una cuenta,
o zanjar una discusión. Nadie necesita auditar a quién le toca fregar los
platos.
Por qué un sorteo del navegador supera al objeto físico
Una moneda real está ligeramente sesgada por cómo se estampan sus caras, y cae del lado en que empezó marginalmente más a menudo de lo debido. Un dado barato es peor: los puntos moldeados quitan cantidades distintas de material de cada cara, así que la cara del seis es fraccionalmente más ligera. Ningún sesgo importa para un juego de mesa y ninguno se puede eliminar teniendo cuidado.
Un sorteo calculado a partir del pozo de entropía del sistema operativo no tiene ninguna asimetría física que heredar. No es “tan bueno como” una moneda real — en cuanto a justicia, es mejor.