Определение процента выигрыша от уровня навыка - PullRequest
0 голосов
/ 21 ноября 2010

Я делаю программу, в которой два игрока сталкиваются друг с другом в «бою», каждый игрок имеет уровень квалификации, представленный числом от 1 до 100, это число используется для определения, какой игрок лучше, например, если у игрока A 50, а у игрока B 100, тогда у B на 50% больше шансов на победу в бою. Как можно было бы получить это число, зная уровень мастерства обоих игроков?

Я пробовал разные способы, например, добавляя оба уровня навыка и выбрасывая случайное число в этом диапазоне, если число меньше навыка игрока, тогда он выигрывает, но я не уверен, что это хороший способ, я думаю вероятность выключена. Я также пытался использовать правила, например, если у них один и тот же навык, то он равен 50% (любой может выиграть), если один наполовину другой, тогда у младшего игрока есть 25% шансов и так далее, но это быстро усложняется. Любые указатели о том, как сделать этот расчет?

Заранее благодарю за помощь

-hei

1 Ответ

0 голосов
/ 21 ноября 2010

если у игрока А 50 и у игрока В 100, то у В на 50% больше шансов на победу в бою

Если вы имеете в виду, что игрок Б должен выигрывать в два раза чаще, тогда этоработает:

r = random(1, A+B)
if r <= A
  winner = 'A'
else
  winner = 'B'

Победитель А выиграет в 50/150 или 1/3 времени.Победитель Б выиграет в 2/3 времени (вдвое больше).

Может быть, вы имеете в виду, что расстояние является весом.Например, 10 против 5 должно иметь преимущество 5%.

Тогда вы можете попробовать (предполагая B >= A):

r = random(1, 200 + B - A)
if r <= 100 
  winner = 'A'
else
  winner = 'B'

Так что если A == B, то шансы равны.

...