Алгоритм ранжирования Python с 30 уровнями - PullRequest
2 голосов
/ 29 сентября 2010

Я пытаюсь найти простую систему алгоритмического ранжирования на основе Python.

Вот сценарий:

Будет 30 уровней, уровень 1 начинается с 0 баллов.Для достижения уровня 30 требуется 2000 баллов.

По мере прохождения уровней потребуется больше очков.

Например, для перехода с уровня 1 на 2 может потребоваться 3 балла.Уровень 2 до 3 может занять 5 дополнительных очков.Уровень 29-30 может получить 1200 дополнительных очков.

Поскольку счет будет рассчитываться на лету, мне также нужен способ определить, на каком уровне находится игрок.Например, какой уровень имеет человек с 358 баллами?

Я мог бы установить баллы вручную, но ограничение в 2000 баллов будет меняться изо дня в день, так что это не идеалистический вариант.

Iдумал о чем-то похожем на Pagerank Google (1-10), где легко получить от 0 до 4, но 9-10 - очень сложное достижение.

Какие-нибудь простые фрагменты или подсказки?

Спасибо

Ответы [ 2 ]

3 голосов
/ 29 сентября 2010

Используйте логарифмическую шкалу. Если вы хотите пример кода:

base = 2 # change to change the rate at which you go through the levels
levels = 30
finalPoints = 2000
scale = levels/math.log(finalPoints, base)
level = math.floor(scale*math.log(points, base))
3 голосов
/ 29 сентября 2010

Обычным решением является использование логарифмической шкалы. Если вы используете log base 2, то каждому уровню нужно вдвое больше очков. Если вы используете базу 10 журналов, каждому уровню нужно в 10 раз больше очков. Таким образом, вы можете «согнуть» кривую. См. Страницу Wikipedia для математики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...