Выбор шахматиста из пула - алгоритм - PullRequest
0 голосов
/ 18 мая 2011

Hii, у меня есть эта проблема
Есть n [четное] количество игроков, которые хотят играть в шахматы
Как я могу рандомизировать игрока и противников?[каждый игрок получит только один шанс]

Думаю, что есть 6 игроков - p1, p2, p3, p4, p5, p6
Я хочу написать код, который будет выполнять такую ​​процедуру для меня
p1 против p5
p2 против p6
p3 против p4

Ответы [ 3 ]

2 голосов
/ 18 мая 2011

Вы можете назначить уникальное случайное число каждому игроку, отсортировать список игроков по этому номеру и выбрать пары 1-2, 3-4, 5-6 и так далее.Должна быть очень быстрой из-за встроенной сортировки, которая есть сейчас почти на каждом языке.

1 голос
/ 18 мая 2011

Делай все комбинации и перетасуй их Фишер-Йейтс

0 голосов
/ 18 мая 2011
store players in array a of size n
let p be a pair(w, b)
let l be a list of pairs
while n > 0
    let x be a random number between 0 and n
    add player at index x in a to p as w
    remove index x from a
    n--
    let y be a random number between 0 and n
    add player at index y in a to p as b
    remove index y from a
    n--
    add p to l
endwhile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...