Формула арифметической прогрессии - PullRequest
1 голос
/ 06 сентября 2011

У меня проблемы с попыткой выяснить арифметические прогрессии.Я ищу формулу с выходом, который увеличивается на 100 больше, чем его последнее увеличение ... как это:

100, 300, 600, 1000, 1500

Таким образом, шаблон увеличения выглядит так:

(100+)200, (300+)300, (600+)400, (1000+)500, etc

2 часа и 2, передняя и задняя, ​​бумажные царапины не дали такой формулы.Я надеюсь, что это с тех пор, потому что мой мозг буквально зажарен прямо сейчас.

Это, по сути, формула повышения уровня для RPG.Когда вы уровень 1, вам нужно 100 опыта, чтобы повысить уровень.Уровень 1: 100 (увеличение на 100)

Уровень 2: 300 (увеличение на 200)

Уровень 3: 600 (увеличение на 300)

Уровень 4: 1000 (увеличено на 400)

и так далее ...

Мне не хочется жестко кодировать уровни, поэтому кто-нибудь, пожалуйста, помогите мне.

Ответы [ 2 ]

3 голосов
/ 06 сентября 2011

запишите все свои выражения:

level i = leveil i-1 + i*100
level i-1 = level i-2 + i-1 * 100
...
level 1 = level 0 + 100

, затем суммируйте эти формулы на один уровень k с левой стороны, исключите следующий уровень k с правой стороны, и вы получите:

Level i = level 0 + sum(k , k=1 to i)*100

then level i = i*(i+1)/2 *100
2 голосов
/ 06 сентября 2011

Это просто уравнение с треугольными числами.

k * n * (n + 1) / 2

, где k=100 и n=1,2,3,.... Вы можете получить свой список следующим образом:

k = 100
n_max = 10

for n in range(1, n_max):
    print k * n * (n + 1) / 2

где n_max - количество необходимых вам элементов.

...