2010-11-21 6 views
0

ich ein Programm mache, in dem zwei Spieler einander in „Kampf“ Gesicht, jeder Spieler eine Spielstärke haben, durch eine Zahl zwischen 1 und 100 dargestellt ist, wird diese Nummer verwendet, die Spieler zu bestimmen, Ist zum Beispiel besser, wenn Spieler A 50 und Spieler B 100 hat, dann hat B 50% mehr Chancen, den Kampf zu gewinnen. Was wäre ein guter Weg, diese Zahl zu erhalten, wenn man das Können beider Spieler kennt?Bestimmung Win Prozentsatz von Skill-Level

Ich habe verschiedene Möglichkeiten ausprobiert, zum Beispiel beide Fähigkeitsstufen hinzuzufügen und eine zufällige Zahl in diesem Bereich zu wählen, wenn die Zahl kleiner ist als eine Spielerfertigkeit, dann gewinnt er aber ich bin mir nicht sicher, ob das ein guter Weg ist denke, die Wahrscheinlichkeit ist aus. Ich habe auch versucht, Regeln zu verwenden, zum Beispiel, wenn sie dieselbe Fähigkeit haben, dann 50% (jeder kann gewinnen), wenn man die Hälfte der anderen ist, dann sind 25% Chancen für den niedrigeren Spieler und so weiter, aber das wird schnell kompliziert. Irgendwelche Hinweise zur Durchführung dieser Berechnung?

Vielen Dank im Voraus für Ihre Hilfe

-hei

+0

Sie fragen speziell darüber, was zu tun ist, wenn die Nutzer gleich * Skill-Level * haben? –

+0

@Cody Gray - Nein, ich bin zu fragen, einen Weg über, um die Chancen für einen Spieler zu bekommen, um zu gewinnen, sein und sein Gegner Qualifikationsniveau zu kennen. Wenn sie das gleiche Qualifikationsniveau haben, sind es 50% Chancen für eines von ihnen. Schreibweise bearbeiten – Hei

Antwort

0

wenn Spieler A 50 und Spieler B hat 100 dann B hat 50% mehr Chancen

den Kampf zu gewinnen Wenn Sie meinen, dass Spieler B doppelt so oft gewinnen sollte, dann funktioniert das:

Gewinner A gewinnt 50/150 oder 1/3 der Zeit. Gewinner B gewinnt 2/3 der Zeit (doppelt so viel).

Vielleicht meinen Sie für die Entfernung das Gewicht zu sein. Zum Beispiel sollten 10 gegen 5 einen Vorteil von 5% haben.

Dann könnten Sie versuchen (unter der Annahme B >= A):

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

Also, wenn A == B dann stehen die Chancen auch sind.

+0

Vielen Dank für Ihre Antwort, ich habe versucht, das Problem mit der Wahrscheinlichkeit zu sehen, aber die Art und Weisen Sie erklären, macht es mehr Sinn, ich war verwirrend 50% (1/2) mit B doppelt so viel gewinnt (1/3 und 2/3) Auch ich muss meine Mathefähigkeiten verbessern, übrigens ist das Python oder nur Pseudocode? – Hei

+0

oh habe ich deine Bearbeitung nicht gesehen, ich bin ein wenig verwirrt mit deiner zweiten Lösung Würdest du es bitte ein wenig erklären? danke – Hei

+0

Es ist nur psuedocode. Mit der ersten Version 1 vs 2 und 50 vs 100 ist das gleiche. B wird doppelt so viel gewinnen. Bei der zweiten Version bestimmt der Abstand zwischen A und B die Wahrscheinlichkeit. 5 vs 10 ist ein Unterschied von 5. Also für jeden Sieg von A, können Sie erwarten, dass B 1,05-mal (5% mehr) gewinnt. 50 vs 100 ist ein Unterschied von 50, also kann man für jeden Sieg von A 1,5 Siege von B erwarten (50% mehr). – Matthew