So erstellen Sie eine Wahrscheinlichkeit um einen bestimmten Prozentsatz?
Ich versuche zu schaffen, eine prozentuale Wahrscheinlichkeit für ein Spiel. E. g. wenn ein Element hat eine 45% chance auf einen kritischen Treffer, das muss bedeuten, ist es 45 von 100 trifft kritisch werden würde.
Erste, ich habe versucht, eine einfache Lösung:
R = new Random();
int C = R.Next(1, 101);
if (C <= ProbabilityPercent) DoSomething()
Aber in 100 Iterationen mit einer chance von z.B. 48%, es gibt 40-52 von 100.
Gleiches gilt für 49, 50, 51.
Es gibt also keinen Unterschied zwischen diesen "Prozenten".
Die Frage ist, wie ein Prozentsatz von z.B. 50, und erhalten Sie streng 50 von 100 zufällig?
Es ist eine sehr wichtige Sache für die Wahrscheinlichkeit von seltenen Gegenstand zu finden, mit einer Chance, um eine chance zu finden, die mit einem Element. Also der buff von 1% wäre sensinble, denn jetzt ist es nicht.
Sorry für mein schlechtes Englisch.
Stellen Sie sicher, Sie verstehen den Zufall.
Das bedeutet, dass wenn eine 50% ige chance, eine "1" in eine binäre Sequenz von 10 bit, es wäre 0, 1, 0, 0, 0, 1, 1, 0, 1, 1 zum Beispiel. Aber trotzdem - 5 "1"'s. Random occurencies, strenge zählen.
Dann ist es nicht wirklich zufällig. Es ist zufällig aus einem pool, nicht wirklich zufällig. Zufällig wie ein deck von Karten, die nicht zufällig wie ein Würfel zu werfen.
außerdem; über die - Fenster von 100 Rollen muss es gemessen werden? wenn es ein schieben - Fenster, dann die einzige gültige Lösung zu halten, ist die Wiederholung der gleichen 100 Ergebnisse - extrem nicht-random.
InformationsquelleAutor maelstrom | 2012-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie denken nur in Bezug auf die gleichmäßige Verteilung über wiederholte rollt.
Können Sie nicht, schauen Sie über 100 Rollen, weil Sie gezwungen, nachzugeben genau 45 wäre nicht zufällig. In der Regel, solche Brötchen sollten zeigen "zu wenig Speicher". Zum Beispiel, wenn Sie ein Würfel suchen für ein 6, Sie eine 1 in 6 chance. Wenn Sie Rollen Sie es 5-mal, und nicht bekommen, eine sechs - dann: die chance, eine 6 auf den nächsten Wurf ist nicht 1. Es ist immer noch 1 zu 6. Als solche können Sie nur schauen, wie gut es erfüllt Ihre Erwartungen, wenn fortgeführten über eine statistisch große Anzahl von Ereignissen... 100,000 sagen.
Grundsätzlich gilt: Ihre aktuelle code ist in Ordnung. Wenn der Benutzer weiß, (weil Sie sich getroffen haben 55 mal ohne kritisch), die nächsten 45 trifft muss kritisch sein, dann ist es nicht mehr zufällig, und Sie können Spiel das system.
; 45% chance auf kritischen Treffer, scheint ein wenig hoch ;p
Ich dachte, es war einfach "awesome holy chaos death hammer von maximum carnage"
vielen Dank, ich habe Ihren Punkt. Vielleicht habe ich ein wenig ernsthaft über ein Konzept von Diablo II Magic Find. Ich dachte, es ist viel komplizierter, als meinen code.
DII MF ist sogar noch komplizierter, weil seine Wirkungskraft. 100% MF garantiert nicht nur finden, blauen und bessere Waffen. 🙂
Wenn Sie sagen, kann mir mehr über dieses system wäre es viel mehr zu schätzen. Ich verstehe, dass "abnehmende Erträge" bedeutet Unterschied zwischen geringerem Werte ist viel mehr, als zwischen den größeren. Aber wie kann ich das implementieren?
InformationsquelleAutor Marc Gravell
Nein, das ist nicht wahr. Sie missunderstud völlig dem Konzept der Wahrscheinlichkeit. Sie wollen nicht eine "prozentuale Wahrscheinlichkeit", wollen Sie eine "prozentuale zufällige Verteilung von 100 Proben".
Was Sie brauchen, ist ein "bag of events", 45 von Ihnen "crytical" und 55 "nicht crytical". Sobald Sie wählen ein Ereignis aus der Tasche, müssen Sie nur die verbleibenden Veranstaltungen zu wählen das nächste mal.
Können Sie Modell es auf diese Weise:
InformationsquelleAutor Yván Ecarri
Da bin ich kein Experte in C# verwende ich ein C++ - Funktion für eine einfache, aber noch immer gilt für jede Sprache.
rand() - Zufallszahlen-generator.
Ich habe diese Methode sehr groß und sickerte durch raster und es funktioniert sehr gut für präzise Werte.
InformationsquelleAutor starhacker
Die Sache ist, mit
Random
möchten Sie vielleicht zu initialisieren dieser Klasse nur einmal.Dies ist, weil
Random
verwendet die Systemzeit als seed für die Generierung von Zufallszahlen.Wenn deine Schleife ist sehr schnell, könnte es passieren, dass mehrere Random-Instanzen mit dem gleichen seed und damit die Erzeugung der gleichen zahlen.
Überprüfen Sie die generierten zahlen, wenn Sie vermuten, dies geschieht.
Neben dieser inhärenten Zufälligkeit ist, dass es nicht geben Ihnen genaue Ergebnisse.
Dies bedeutet, dass selbst mit einer 50/50 chance kann es passieren, dass eine Folge von 100 "Köpfe" oder "Schwanz" gibt "Köpfe" 100 mal.
Die einzige Sache, die Sie tun können, ist, erzeugen der Random-Instanz einmal und Lebe mit den Ergebnissen; sonst sollten Sie nicht verwenden Zufällige.
Okay, er sagte: "Iterationen", so dachte ich, vielleicht hat er eine Schleife, also wollte ich ihn warnen, über die möglichen Nebenwirkungen der Initialisierung der Random in einer Schleife.
Ich habe eine Schleife für einen test Zweck. Und ich initialisiert, die Zufällig vor der loop.
InformationsquelleAutor Davio