我想要根据生成的1到100之间的随机数,以25%的概率触发事件,使用以下代码:
int rand = random.Next(1,100);
以下代码能实现这个目的吗?
if (rand<=25)
{
// Some event...
}
我打算使用1到100之间的数字,这样以后可以调整概率 - 比如通过使用
if (rand<=23) {...}
我想要根据生成的1到100之间的随机数,以25%的概率触发事件,使用以下代码:
int rand = random.Next(1,100);
以下代码能实现这个目的吗?
if (rand<=25)
{
// Some event...
}
我打算使用1到100之间的数字,这样以后可以调整概率 - 比如通过使用
if (rand<=23) {...}
random.Next(0,100)
,正如文档所述。
minValue:返回的随机数的包含下限。
maxValue:返回的随机数的排除上限。maxValue必须大于或等于minValue。
强调我的是,排除上限意味着它不包括您传递的数字,因此我的代码生成范围为0-99,而你的代码生成范围为1-99。
所以请将你的代码更改为
int rand = random.Next(0,100)
if (rand < 25) //25%
{
// Some event...
}
//other code
if (rand < 23) //23%
{
// Some event...
}
将<=
更改为<
是因为您现在使用的是排除上限范围。
if (random.Next(0, 100) < 25)
或者,如果你必须使用基于1的逻辑,
if (random.Next(1, 101) <= 25)
if (rand >= 25 && rand < 50)
来处理基于零的数字,因为下限是包括在内的,上限也是包括在内的。对于基于1的数字,你的表达式是正确的。 - phoogdouble rand = random.NextDouble();
if(rand < .25)
{
...
if (rand < .25)
;上限是排除在外的:http://msdn.microsoft.com/en-us/library/system.random.nextdouble.aspx - phoogif (rand <= .25)
,但他在 5 分钟的编辑窗口内进行了更改。 - phoog
Random
实例,否则它们将返回相同的“随机”结果。 - mellamokb