Prozentuale Wahrscheinlichkeit
Habe ich dieses code-snippet:
Random rand = new Random();
int chance = rand.Next(1, 101);
if (chance <= 25) //probability of 25%
{
Console.WriteLine("You win");
}
else
{
Console.WriteLine("You lose");
}
Meine Frage ist, ist es wirklich berechnen eine 25% Wahrscheinlichkeit für einen Sieg?
Ist die Gewinnchance für den Spieler ist hier wirklich 25%?
Edit:
Schrieb ich dies:
double total = 0;
double prob = 0;
Random rnd = new Random();
for (int i = 0; i < 100; i++)
{
double chance = rnd.Next(1, 101);
if (chance <= 25) prob++;
total++;
}
Console.WriteLine(prob / total);
Console.ReadKey();
Und es ist sehr ungenau. Es geht von etwa 0,15 bis 0,3.
Aber wenn ich mehr Prüfungen (änderung von (i < 100), (i < 10000)) es ist viel genauer.
Warum ist das so? Warum sind es nicht 100 Prüfungen genug, um es genau?
- Ja, wenn rand gibt eine Normalverteilung von zufälligen Werten.
- Ich denke du meinst die gleichmäßige Verteilung. Die Gaußsche Normalverteilung ist.
- Du hast Recht, ich meinte eine Sache und schrieb einen andern. Danke.
- Ich habe deine bearbeiteten Titel. Bitte sehen, "Sollten Fragen enthalten "tags" im Titel?", wo der Konsens ist ", Nein, Sie sollten nicht".
- wenn Sie rollte ein sterben 6 mal würden Sie es nennen "sehr ungenau", wenn Sie 2 oder 3 von einer Zahl anstelle von 1 von jedem?
- Die variable Summe folgt einer Binomialverteilung mit p=0,25. Die Standardabweichung der Summe für 100 versuche ist also sqrt(25) = 5. Mit einer normalen Näherung würde man also nur erwarten, ~66% der tests, die im Abstand von 20 <= Gesamt <= 30, was bedeutet, dass Ihre berechneten p ist nur zwischen .2 und .3 66% der Zeit. Wenn Sie zu erhöhen, um 1000 die gleichen 66% Intervall ist .235 <= Gesamt <= .265. Für 10000 es ist .245 <= Gesamt <= .255
- Möglich, Duplikat der Random number generator wird nur die Erzeugung einer Zufallszahl
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies sehr leicht selbst überprüfen:
das Ergebnis:
Die conslusion: ja, ja, es ist.
Edit: Nur so zum Spaß, die LINQy version:
Den meisten Fällen, würde ich sagen ja. Aber Sie haben sich daran zu erinnern, dass die meisten Randomisierung algorithmen verwenden eine pseudo-random-generator, und so zum Teil, du bist auf Gedeih und Verderb von den Eigenheiten des jeweiligen generator. Ich Stimme mit @AwokeKnowing, Sie können auch einfach eine random Zahl zwischen 1 und 4 und das gleiche Ergebnis erhalten. Ich gehe davon aus, dass die .Net Randomisierung Algorithmus ausreichen sollte für die meisten Fälle. Für mehr info siehe:
http://en.wikipedia.org/wiki/Pseudorandom_number_generator
ja, das sollte funktionieren. so wie >=75 würde auch funktionieren. wenn Sie nur wollen, 25%, können Sie voran gehen und tun Sie einfach eine zufällige Zahl zwischen 1 und 4.
aber bitte beachten Sie, dass eine 25% chance bedeutet NICHT, dass von 100 versucht, er wird gewinnen 25 mal. Es bedeutet nur, jedes mal hat er eine 25% chance zu gewinnen. es ist theoretisch möglich, für ihn zu gewinnen jedes mal. (aber das wird nicht passieren, vor allem mit einem pseudo-random-generator).
Intern die Zufallszahl wird zwischen 0 und 1, so ist es nur als random zu verwenden 4 als 1000, so weit wie das geht. fügen Sie den parameter nur Projekte, it-Bereich, den Sie möchten.