Quiero elegir un juego al azar en los 50 juegos que tengo para jugar con uno de mis amigos. Pero este amigo no confía en mí, y yo tampoco: cada vez que uno de nosotros elige un juego, el otro se queja de que la elección no fue realmente aleatoria.
Una primera solución podría ser poner todos los nombres en un sombrero y después de elegir un nombre; pero ambos somos paranoicos: el sombrero podría contener solo un nombre repetido 50 veces, así que tenemos que verificar que todos los nombres estén presentes solo una vez para asegurar una elección aleatoria. Esto es demasiado largo.
Segunda solución: ambos elegimos al azar un número entero en [1,50], lo escribimos en un papel y luego sumamos el módulo de resultado 50. Esta es una buena solución cuando nos enfrentamos.
¿Pero qué pasa si queremos elegir un juego en línea, yo jugando en París y mi amigo jugando en Nueva York? He intentado emular el protocolo anterior: cada jugador elige aleatoriamente un número en un gran intervalo como [1,1e30] y, por primera vez, envía un hash de su número (simulando el hecho de ocultar el número en un papel) . Cuando cada jugador ha recibido el hash del otro, los dos jugadores publican sus números y los agregan en módulo 50.
¿Este protocolo es correcto? ¿Hay un protocolo mejor (quizás más rápido) para este propósito?