Acabei de escrever a personalização de um mecanismo de xadrez, basicamente adicionando um bitboard ao mecanismo tscp disponível gratuitamente. Agora estou testando no winboard e percebo que muitas vezes as duas máquinas jogam o mesmo jogo várias vezes em uma partida. Eu gostaria de adicionar alguma variedade aos jogos, pelo menos, escolhendo movimentos iguais aleatoriamente. Estou apenas usando a pesquisa alfa-beta com ordenação de movimentos simples. Estou pensando em adicionar um pequeno número aleatório aos nós das folhas para romper os laços, mas eu realmente não gosto dessa solução, porque alguns dos bônus menores que a função de avaliação usa são de 3 a 5 centipawns. Portanto, não tenho "espaço" suficiente para o número aleatório romper os laços.
meu outro pensamento era fazer com que o mecanismo escolhesse aleatoriamente o que manter quando encontrasse uma avaliação == alfa. Eu realmente não gosto disso porque suspeito que favorece os movimentos ordenados em último lugar na pesquisa.
A pergunta é como posso escolher aleatoriamente os nós das folhas com a mesma pontuação? e também uniformemente?