2010-11-21 35 views
0

Je fais un programme dans lequel deux joueurs se font face en "combat", chaque joueur a un niveau de compétence, représenté par un nombre entre 1 et 100, ce nombre est utilisé pour déterminer quel joueur est meilleur donc par exemple si le joueur A a 50 et le joueur B a 100, alors B a 50% de chances de gagner le combat. Quel serait un bon moyen d'obtenir ce numéro en connaissant le niveau de compétence des deux joueurs? J'ai essayé différentes façons, par exemple en ajoutant les deux niveaux de compétence et en lançant une sélection d'un nombre aléatoire dans cette gamme si le nombre est inférieur à une compétence de joueur alors il gagne cependant je ne sais pas si c'est un bon moyen, je pense que la probabilité est éteinte. J'ai aussi essayé d'utiliser des règles, par exemple si elles ont la même compétence que 50% (n'importe qui peut gagner) si l'une est la moitié de l'autre, alors 25% de chances pour le joueur inférieur et ainsi de suite. Des pointeurs sur la façon de faire ce calcul?Déterminer le pourcentage de victoires à partir du niveau de compétence

Nous vous remercions d'avance pour votre aide

-hei

+0

Vous demandez spécifiquement quoi faire lorsque les utilisateurs ont un niveau de compétence égal? –

+0

@Cody Grey - Non, je demande un moyen d'obtenir les chances pour un joueur de gagner, connaissant son niveau de compétence et celui de son adversaire. S'ils ont le même niveau de compétence, ce serait 50% de chance pour chacun d'entre eux. Modifier l'orthographe – Hei

Répondre

0

si le joueur A a 50 et le joueur B a 100 alors B a 50% plus de chances de gagner le combat

Si vous voulez dire que le joueur B devrait gagner deux fois plus souvent, alors cela fonctionne:

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

Le gagnant A gagnera 50/150 ou 1/3 du temps. Le gagnant B gagnera 2/3 du temps (deux fois plus). Peut-être que vous voulez dire pour la distance à être le poids. Par exemple, 10 vs 5 devrait avoir un avantage de 5%.

Ensuite, vous pouvez essayer (en supposant B >= A):

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

Donc, si A == B alors les chances sont même.

+0

Merci pour votre réponse, j'essayais de voir le problème avec la probabilité mais la façon dont vous l'expliquez a plus de sens, je confondais 50% (1/2) avec B gagne deux fois plus (1/3 et 2/3) J'ai aussi besoin de polir mes compétences en mathématiques, en passant, est-ce python ou juste pseudo-code? – Hei

+0

oh n'a pas vu votre édition, je suis un peu confus avec votre deuxième solution cela vous dérangerait l'expliquer un peu s'il vous plaît? merci – Hei

+0

C'est juste psuedocode. Avec la première version 1 vs 2 et 50 vs 100 c'est la même chose. B gagnera deux fois plus. Avec la deuxième version, la distance entre A et B détermine la probabilité. 5 vs 10 est une différence de 5. Donc, pour chaque victoire de A, vous pouvez vous attendre à ce que B gagne 1,05 fois (5% de plus). 50 vs 100 est une différence de 50, donc pour chaque victoire de A, vous pouvez vous attendre à 1,5 victoires par B (50% de plus). – Matthew