Acabo de terminar de personalizar un motor de ajedrez básicamente agregando un bitboard al motor tscp disponible de forma gratuita. Ahora lo estoy probando en winboard y noto que a menudo las dos máquinas jugarán el mismo juego varias veces en un partido. Me gustaría agregar algo de variedad a los juegos al menos hacer que elija movimientos iguales al azar. Solo estoy usando la búsqueda alfa-beta con un simple orden de movimiento. Estoy pensando en agregar un pequeño número aleatorio a los nodos de la hoja para romper los lazos, pero realmente no me gusta esta solución porque algunos de los bonos más pequeños que utiliza la función de evaluación son 3-5 centipawns. Así que no tengo suficiente "espacio" para que un número aleatorio rompa los lazos.
mi otro pensamiento era hacer que el motor escogiera al azar qué movimiento mantener cuando encontró una evaluación == alfa. Realmente no me gusta esto porque sospecho que favorece los movimientos ordenados en último lugar en la búsqueda.
La pregunta es ¿cómo puedo elegir al azar entre los nodos de hoja de puntuación iguales? y también de manera uniforme?