Quiero saber si existe un algoritmo para al azar y de forma segura el dibujo de las cartas de una baraja.
Yo estaba pensando en una manera de jugar a la baraja basada en juegos online con ninguna persona de confianza y no hay manera de hacer trampa.
Más formalmente:
Quiero encontrar un algoritmo, si es posible, que permite que el jugador a tomar turnos en la elaboración de cartas de una baraja de tal forma que:
- Las cartas extraídas son al azar, y los jugadores no pueden influir en el orden de
- Ningún jugador puede tener más información sobre sus oponentes las cartas y las cartas que quedan en la baraja entonces se tendría en un mundo real, juego (por ejemplo: cuando la cubierta está vacía cada jugador sabe que el otro jugador las tarjetas de todos modos)
EDIT: voy a aclarar algunos puntos (gracias a los comentarios):
Yo no estoy interesado en el código, ni los detalles de la implementación, pero lo que estoy buscando es un algoritmo, en su descripción abstracta.
Voy a escribir un ejemplo de lo que estoy buscando en el caso de las dos cubiertas de $N$ tarjetas de:
- Cada jugador elige una permutación aleatoria de [1..N]
- Él escribe, hashes, firma el hash, y pasa el hash+firma para que el otro jugador
- Cuando un jugador debe robar una carta el otro jugador elige un número $i$ al azar que van desde 1 hasta el número de cartas en la baraja, el jugador elige a continuación la $i$-ésimo número en su permutación aleatoria
- Al final del partido los jugadores de intercambio de la original de permutaciones, y comprobar si el juego era válido
Ninguno de los jugadores puede controlar el orden de dibujo, y ninguno de ellos puede engañar sin ser atrapado (la firma de la hash significa que en caso de controversia, el jugador debe aportar original shuffle) (para el juego los jugadores deben firmar mueve demasiado, pero eso es más allá del punto).
El problema es hacerlo con una sola baraja.