iKapex
@iKapex

Как организовать random с приоритетом?

Задача такая: есть таблица с рейтингами. Рандомно выбираю какого-либо пользователя (это первый противник), а потом рандомно выбираю второго противника НО! с таким же рейтингом, как у первого противника.

В моей таблице: id пользователя и рейтинг. В SQL есть функция RANDOM.
Но мне нужен такой алгоритм: пускай вылетают случайные пользователи, но пускай пользователи с меньшим рейтингом (диапазон я задам) выпадают в три раза чаще, чем пользователи с большим (диапазон я тоже задам).

Как это можно реализовать? и главное - что почитать? (я еще и пхп использовать могу )

Всем спасибо за ответы.
  • Вопрос задан
  • 493 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Стандартный алгоритм для интервалов:
Пусть на каждый случай большего рейтинга противника приходится два случая равного и три случая меньшего.
Больший: 1
Равный: 2
Меньший: 3
Просуммируем, 1+2+3 = 6.

Найдём граничные значения:
Больший: [0, (0+1)] = [0, 1)
Равный: [1, 1+2) = [1, 3)
Меньший: [3, 3+3) = [3, 6)

Генерируем случайное число X от 0 до 6.
Если X < 1, то выбираем противника с большим рейтингом
Иначе если X < 3, то выбираем противника с равным рейтингом
Иначе выбираем противника с равным рейтингом
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vpuhoff
@vpuhoff
Программист в свободное от работы время
гуглить по взвешенной выборке, на чем и как реализовать дело третье
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы