Sei que você já marcou uma resposta, mas, para ser honesto, é simplificado demais e realmente não aborda nenhum dos principais problemas de um sistema ELO, esteja você lidando com bots ou jogadores reais. Por exemplo, as principais considerações ao criar um sistema ELO justo / preciso seriam: número de jogadores, número de partidas, impacto relativo da habilidade (ou seja: chance) no resultado, eficiência nas partidas e quanta variação há na classificação por vitória /perda.
Em um mundo ideal, você seria capaz de combinar pessoas de habilidades iguais e, em um jogo de habilidades, elas atingiriam uma taxa de vitória de 50%. No entanto, isso pressupõe que você conhece a habilidade de todos e que o impacto do acaso é relativamente pequeno. Como você não conhece o primeiro (e não especificou o último), há várias coisas que você precisa fazer para determinar com precisão a habilidade de uma maneira eficiente e não é tão simples quanto jogar bots. muitos robôs diferentes quanto possível:
1) Você precisa configurar uma linha de base de habilidade para jogadores "novos" em uma escala de modo que eles possam subir ou descer e que a linha de base represente a média esperada em uma curva normal de sino. IE: 1250 em uma escala de 1-2500.
2) Os novos jogadores precisam jogar um certo número de jogos de "colocação", a fim de estabelecer sua classificação inicial, o que geralmente é feito em 10 a 20 jogos classificados mais fortemente que os jogos subseqüentes. IE: o ganho / perda na classificação é o dobro durante as colocações, o que seria mais tarde, a fim de incentivar a rápida separação dos jogadores.
3) Você precisa levar em consideração outros fatores nas suas partidas, como a taxa de vitórias em relação ao total de partidas, para que os jogadores em extremos da curva de habilidades sejam movidos em uma velocidade mais rápida à sua "verdadeira" habilidade, enfrentando pessoas mais acima ou abaixo sua classificação atual. IE: um jogador com uma taxa de vitória de 80% sobre um tamanho de amostra decente deve enfrentar as pessoas mais acima de sua classificação e subir a escada mais rapidamente do que alguém com uma taxa de vitória de 55% mais próxima de sua verdadeira habilidade.
4) Você precisa ter um bom entendimento de como o acaso afeta o resultado e deve levar em consideração a velocidade de criação de partidas (tempos de fila) ao determinar com quem combinar, a fim de manter a variação de habilidades razoável. Usando a escala anterior, você não deve ter um jogador de 1250 enfrentando um jogador de 2000 sob nenhuma circunstância (exceto quando os dois não tiverem classificação). Não é uma combinação justa e não permite adicionar / remover pontos com precisão do ELO.
A maneira como eu configuraria um sistema seria criar dois modificadores para um valor de ganho / perda de ponto base, um usando o resultado esperado com base na variação da classificação e outro com base na taxa de ganhos para o valor total correspondente. IE: alguém com uma classificação de 1500 que tem uma taxa de vitória de 70% que vence um jogador com classificação de 1600 ganhará mais pontos por ter uma taxa de vitória alta E por vencer um jogador com classificação mais alta.
Então, você só precisa garantir que os jogadores concluam uma amostra razoável de jogos e você terá o sistema "mais eficiente", com base em quanta chance está envolvida no "jogo" para o qual você está implementando o sistema ELO. Um jogo com chances relativamente baixas pode levar até algumas dezenas de jogos para ser preciso, um jogo com chances relativamente altas pode levar centenas ...
PS: para o registro, você não quer que pessoas com níveis de habilidade drasticamente diferentes joguem porque isso apenas dilui a precisão do sistema. Mesmo que você incline para que as partidas acima de uma certa variação tenham muito pouco impacto, isso criará problemas, porque os jogadores se sentirão não recompensados ou serão punidos excessivamente por partidas com alta variação.
editar: esqueci de abordar a parte "já classificada" da sua pergunta, mas é bem simples. Você combina as pessoas com base na classificação de habilidade mais próxima disponível na fila, porque essa é a correspondência mais equilibrada e o ganho / perda de pontos (assumindo taxas de vitória semelhantes) será o valor estático. Se os jogadores forem classificados com precisão, eles manterão a taxa de vitória de 50% e não subirão nem descerão. Se não estiverem , o jogador mais habilidoso ganhará mais do que perderá e sua classificação será atualizada.
A introdução de um novo jogador é ainda mais simples, eles começam na linha de base e são comparados aos jogadores dessa habilidade (com o aumento de ganho / perda) até que suas colocações sejam concluídas. Então, vamos supor que o ganho / perda de pontos normal por partida seja 15 sem nenhum modificador. Aqui está um exemplo de posicionamento e classificação de novos jogadores (com ganho / perda duplo):
- Inicial: 0-0 (1250) - enfrenta o adversário de 1250
- Perda: 0-1 (1220) - enfrenta o adversário 1220
- Perda: 0-2 (1190) - enfrenta o adversário 1190
- Vitória: 1-2 (1220) - enfrenta o adversário 1220
- Vitória: 2-2 (1250) - enfrenta 1250 oponente
- Vitória: 3-2 (1280) - enfrenta 1280 oponente
- Vitória: 4-2 (1310) - enfrenta 1310 oponente
- Perda: 4-3 (1280) - enfrenta 1280 oponente
- Vitória: 5-3 (1310) - enfrenta 1310 oponente
- Vitória: 6-3 (1340) - enfrenta 1340 oponente
- Vitória: 7-3 (1370)
- classificação final: 1370