为什么使用方法RandomBool()
,我总是得到1?请帮助修复第二种方法。
static class Tools
{
public static int RandomNumber(int end)
{
var rand = new Random(DateTime.Now.Millisecond);
return rand.Next(0, end);
}
public static bool RandomBool()
{
if(RandomNumber(1) == 0)
return true;
else
return false;
}
}
答案 0 :(得分:1)
您应该使用以下代码:
if(RandomNumber(2) == 0)
这包括0和1,但不包括2,因为Random排除了上限。
或者将return rand.Next(0, end);
更改为return rand.Next(0, end + 1);
答案 1 :(得分:1)
这应该可以解决问题
if(RandomNumber(2) == 0) // <= Correction ; RandomNumber(2) will Return 0 OR 1
return true;
else
return false;
Random.Next方法:(MSDN)
当您将其称为Random.Next(MinValue,MaxValue)
时,请遵循以下规则
大于或等于minValue且小于maxValue的32位有符号整数。返回值的范围包括minValue 但不包括maxValue 。
在您的情况下,您使用的是Min = 0
和Max =1
,它始终会返回0
。