Em muitos jogos de computador, os jogadores tem atributos numéricos que afetam determinar o quanto de dano é causado quando um ataque é realizado ou quando golpeiam (acertam) algo. Digamos que em um determinado jogo, um jogador tem dois desses atributos: "força"(vamos denotar por F) e "chance crítica"(a qual denotaremos por C). Chance crítica é um número entre 0 e 100. Isto fornece o percentual de chance de um golpe (acerto) ser um "golpe crítico."(Portanto a probabilidade de um golpe crítico e C/100 ).
Um golpe regular faz F quantidade de danos, porém um golpe crítico faz M vezes o dano (M é uma constante). O dano médio causado por golpe (acerto) é a probabilidade de um golpe crítico multiplicar a quantidade do dano causado por esse golpe, mais a probabilidade de um golpe regular multiplicar a quantidade do dano que este (golpe regular) causa. Digamos que nosso jogador tem um total de 100 pontos que ele pode atribuir ou para força ou chance crítica, ou para ambos (portanto por exemplo, C = 30; F = 70 é uma opção.)
a) Qual o dano médio se todos os pontos forem colocados em força? Qual o dano médio se todos os pontos forem colocados em uma chance crítica?
b) Se o "multiplicador de danos" M=3, como os 100 pontos devem ser distribuídos para
Nesse problema, vemos que o dano médio é função da força e crítico(C e F). Assim, escrevemos: D = D(C, F)
Como o enunciado falou, se somarmos a chance de dano normal pelo dano normal à chance de dano crítico pelo dano crítico, teremos o dano médio D.
→ Chance de crítico: C/100
→ Chance de não ser crítico: 1 - C/100
→ Dano normal: F
→ Dano crítico: MF
Assim, o dano médio será:
Podemos responder ao item a):
Se F = 100 e C = 0, o primeiro termo, do crítico se anula e nos sobra apenas D(0, 100) = F.
Se F = 0 e C = 100, os dois termos se anulam e sobra apenas D(100, 0) = 0. Uma build full crítico não é inteligente aqui.
b) Queremos maximizar a função dano. Poderíamos fazer isso com infinitos pontos de dano e crítico, mas a soma deles é limitada em 100. Logo, temos uma restrição C + F = 100.
Como podemos maximizar uma função de várias variáveis com uma restrição associada? Usando multiplicadores de Lagrange. Para isso, precisamos de uma restrição escrita na forma . Vemos, dos dados, que basta g(C,F) = C + F - 100 = 0
Para resolver o problema usando os multiplicadores de Lagrange, precisamos resolver o sistema:
Onde λ é uma constante real.
Calculamos os gradientes, já substituindo M = 3:
Montamos o sistema:
Fiz esse passo igualando os termos de cada vetor. Repare: eles correspondem as mesmas derivadas parciais(iguala com respeito a F com F, C com C)!
Se jogarmos esses valores de C e F em função de lambda na restrição, vem:
Lista de comentários
Verified answer
Olá, Simuroc!
Nesse problema, vemos que o dano médio é função da força e crítico(C e F). Assim, escrevemos: D = D(C, F)
Como o enunciado falou, se somarmos a chance de dano normal pelo dano normal à chance de dano crítico pelo dano crítico, teremos o dano médio D.
→ Chance de crítico: C/100
→ Chance de não ser crítico: 1 - C/100
→ Dano normal: F
→ Dano crítico: MF
Assim, o dano médio será:
Podemos responder ao item a):
Se F = 100 e C = 0, o primeiro termo, do crítico se anula e nos sobra apenas D(0, 100) = F.
Se F = 0 e C = 100, os dois termos se anulam e sobra apenas D(100, 0) = 0. Uma build full crítico não é inteligente aqui.
b) Queremos maximizar a função dano. Poderíamos fazer isso com infinitos pontos de dano e crítico, mas a soma deles é limitada em 100. Logo, temos uma restrição C + F = 100.
Como podemos maximizar uma função de várias variáveis com uma restrição associada? Usando multiplicadores de Lagrange. Para isso, precisamos de uma restrição escrita na forma . Vemos, dos dados, que basta g(C,F) = C + F - 100 = 0
Para resolver o problema usando os multiplicadores de Lagrange, precisamos resolver o sistema:
Onde λ é uma constante real.
Calculamos os gradientes, já substituindo M = 3:
Montamos o sistema:
Fiz esse passo igualando os termos de cada vetor. Repare: eles correspondem as mesmas derivadas parciais(iguala com respeito a F com F, C com C)!
Se jogarmos esses valores de C e F em função de lambda na restrição, vem:
Com F = 50λ e C = 50(λ - 1), vem F = 75 e C = 25
Usamos esses valores na fórmula do dano: