获取随机整数值C#

时间:2015-03-03 14:36:27

标签: c# random

为什么使用方法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;
    }
}

2 个答案:

答案 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 = 0Max =1,它始终会返回0