2011-04-10 4 views
0

J'ai ce code qui devrait générer des nombres compris entre 1 et 100:C# problème de nombres aléatoires

int aux; 
aux = Game1.rand.Next(101); 
if (aux <= 20) 
{ 
    Trace.WriteLine(aux); 
    seeker = true; 
} 

Le problème est que je reçois des valeurs inférieures à 20 à chaque fois. Si je change 20 à 30 dans l'instruction if, je reçois toujours des nombres plus petits ou égaux à 30. Comment puis-je surmonter cette situation? Merci.

+0

Désolé, www .wwhat. – iehrlich

+0

Peut-être que vous êtes vraiment malchanceux? –

+4

fonctionne comme programmé –

Répondre

1

Essayez quelque chose comme

int aux; 
aux = Game1.rand.Next(101); 
Trace.WriteLine(aux); 

Vous obtenez des valeurs inférieures ou égales 20 simplement parce que vous avez si() clause disant que vous avez besoin exactement des valeurs inférieures ou égales 20.

+0

si je fais cela, il génère des nombres aléatoires correctement, de 1 à 100. mais j'ai besoin de cette instruction if. J'ai besoin de 20% de chance pour qu'un objet change d'attributs ... – Sorin

+1

omg alors qu'est-ce que vous attendez exactement de votre programme? – iehrlich

+0

ok, j'ai besoin de tous les objets de cette classe, pour avoir 20% de chances qu'un attribut soit vrai. toute autre suggestion de comment je peux le faire? – Sorin

3

Vous devez mettre votre Trace.WriteLine(aux);avant la déclaration if pour qu'elle d'écrire des chiffres ci-dessus 20 (ou 30, selon le cas):

int aux; 
aux = Game1.rand.Next(101); 
Trace.WriteLine(aux); 

if (aux <= 20) 
{ 
    seeker = true; 
    //... 
} 
+0

Merci. votre suggestion m'a aidé à trouver le vrai problème :) – Sorin