我有这个家庭作业,我已经找到了一个有效的解决方案,但我不明白为什么当从[0到1]输入范围时,Random()函数只打印零。当我向最大参数添加1时,它工作//rnd.Next(min,max + 1);,但为什么只有在它像这样的时候才会为零:rnd.Next(min,max);
static void Main()
{
Console.Write("Please enter integer n: ");
int n = int.Parse(Console.ReadLine());
Console.Write("Please enter min integer: ");
int min = int.Parse(Console.ReadLine());
Console.Write("Please enter max integer: ");
int max = int.Parse(Console.ReadLine());
Random rnd = new Random();
for (int i = 0; i <= n; i++)
{
Console.WriteLine(rnd.Next(min, max+1));
}
}
答案 0 :(得分:4)
Random.Next
会生成[min, max)
范围内的数字 - 这意味着min
是可能的结果,但max
不是。[0, 1)
。 0
范围内唯一的整数是{{1}}。
答案 1 :(得分:1)
It is part of the language definition.
最大值是独占的,不包括在内,因此如果您想要包含max
,则必须为其添加1。