Pourcentage En Fonction De La Probabilité
J'ai ce bout de code:
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");
}
Ma question est, est-il vraiment calculer 25% de probabilité de victoire, ici?
Est la chance de gagner pour le joueur est vraiment de 25%?
Edit:
J'ai juste écrit ce qui suit:
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();
Et c'est très imprécise. Il va d'environ 0,15 à 0,3.
Mais quand je n'ai plus de contrôle (le changement (i < 100) (i < 10000)) c'est beaucoup plus précis.
Pourquoi est-ce? Pourquoi ne sont pas 100 vérifie assez pour être précis?
Oui, à condition de rand est de donner une distribution normale des valeurs aléatoires.
Je pense que tu veux dire uniforme de la distribution. La normale de la distribution est Gaussienne.
Vous avez raison, je voulais dire une chose et en a écrit un autre. Merci.
si vous avez obtenu un dé 6 fois voulez-vous l'appeler "très imprécise" si vous avez 2 ou 3 d'un nombre au lieu de 1 de chacun?
Le total variable suit une distribution binomiale avec p=0,25. La déviation standard de total pour 100 essais est donc sqrt(25) = 5. À l'aide d'une approximation normale vous feriez donc attendre seulement ~66% de tests pour être dans l'intervalle de 20 <= total <= 30, ce qui signifie que vos calculé p est seulement entre .2 et .3 66% du temps. Si vous augmenter à 1000 le même 66% de l'intervalle est .235 <= total <= .265. Pour 10000 c'est .245 <= total <= .255
Je pense que tu veux dire uniforme de la distribution. La normale de la distribution est Gaussienne.
Vous avez raison, je voulais dire une chose et en a écrit un autre. Merci.
si vous avez obtenu un dé 6 fois voulez-vous l'appeler "très imprécise" si vous avez 2 ou 3 d'un nombre au lieu de 1 de chacun?
Le total variable suit une distribution binomiale avec p=0,25. La déviation standard de total pour 100 essais est donc sqrt(25) = 5. À l'aide d'une approximation normale vous feriez donc attendre seulement ~66% de tests pour être dans l'intervalle de 20 <= total <= 30, ce qui signifie que vos calculé p est seulement entre .2 et .3 66% du temps. Si vous augmenter à 1000 le même 66% de l'intervalle est .235 <= total <= .265. Pour 10000 c'est .245 <= total <= .255
OriginalL'auteur BlueRay101 | 2013-12-06
Vous devez vous connecter pour publier un commentaire.
C'est très facile de vérifier par vous-même:
le résultat:
La conslusion: Oui, oui, il est.
Edit: Juste pour le fun, la LINQy version:
Merci, mais j'ai mis à jour le post avec un code qui fait un test similaire. Le problème est que si il vérifie 100 fois, le résultat peut être n'importe où à partir de 0,15 à 0,3, mais lorsque je vérifie les 10000 fois, il est beaucoup plus précis (dans le code que j'ai écrit). Pourquoi est-ce donc? Pourquoi ne sont pas 100 vérifie assez?
Si vous retournez une pièce de monnaie deux fois et obtenir le même résultat est de la pièce cassée?
OriginalL'auteur Rotem
Pour la plupart des cas, je dirais que oui. Cependant, vous devez vous rappeler que la plupart des randomisation algorithmes utilisent un générateur pseudo-aléatoire, et donc, dans une certaine mesure, vous êtes à la merci de l'idiosyncrasie de ce générateur. Je suis d'accord avec @AwokeKnowing que vous pouvez vous aussi tout simplement faire un nombre aléatoire entre 1 et 4 et obtenir le même résultat. Je suppose que l' .Net algorithme de sélection aléatoire devrait suffire pour la plupart des cas. Pour plus d'infos, voir:
http://en.wikipedia.org/wiki/Pseudorandom_number_generator
OriginalL'auteur Gerald T
oui, ça devrait fonctionner. juste comme >=75 serait trop de travail. si vous voulez juste 25%, vous pouvez aller de l'avant et il suffit de faire un nombre aléatoire entre 1 et 4.
mais s'il vous plaît note, 25% de chance ne veut PAS dire que sur 100 tentatives, il va gagner 25 fois. Cela signifie simplement que chaque fois qu'il a 25% de chance de gagner. il est théoriquement possible pour lui de gagner à chaque fois. (mais cela n'arrivera pas, surtout avec un générateur pseudo-aléatoire).
En interne, le nombre aléatoire entre 0 et 1, il est donc tout aussi aléatoire de 4 à 1000, autant que ça se passe. ajouter le paramètre seulement des projets à la plage que vous souhaitez.
OriginalL'auteur AwokeKnowing