2011-04-10 49 views
0

我有这样的代码应与生成数字1和100:C#随机数问题

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

的问题是我得到的不是每次20小值。如果我在if语句中更改20到30,我总是得到小于或等于30的数字。 我该如何克服这个问题? 谢谢。

+0

对不起,wwwwwhat? – iehrlich 2011-04-10 00:13:35

+0

也许你真的很不幸? – 2011-04-10 00:14:34

+4

按程序设计 – 2011-04-10 00:15:10

回答

1

尝试像

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

你得到下面的值等于20,只是因为你如果有()子句正好说你低于或等于20

+0

如果我这样做,它会正确地产生随机数,从1到100.但我需要如果语句。我需要20%的机会让一个对象有一些属性发生变化... – Sorin 2011-04-10 00:17:07

+1

omg然后你期望你的程序做什么? – iehrlich 2011-04-10 00:17:53

+0

好的,我需要该类的每个对象,以使属性的真实概率为20%。任何其他建议我怎么能做到这一点? – Sorin 2011-04-10 00:19:09

3

你需要把你的Trace.WriteLine(aux);需要值之前if语句,以便它写出任何数字高于20(或30,视情况而定):

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

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

谢谢。你的建议帮助我找到了真正的问题:) – Sorin 2011-04-10 00:26:01