.net 使用随机时我总是得到否定的答案

nef*_*tus 0 .net c# math

在这段代码中,我总是得到否定的答案。为什么?我希望总是得到不同的答案,因为它是随机的。我会很乐意提供任何帮助!

Random random = new Random();
int a = 10;
int cycle = 1000;
while (cycle != 0)
{
    a += random.Next(-1, 1);
    cycle--;
}
Run Code Online (Sandbox Code Playgroud)

Biz*_*han 8

随着Next(-1, 1)你会得到-10。从来没有1,因为:

下界的Random.Next包容

的上限Random.Next独占

要实现您的目标,请将范围从 更改[-1, 1)[-1, 2)

random.Next(-1, 2)
Run Code Online (Sandbox Code Playgroud)


can*_*on7 5

让我们来看看文档Random.Next(int, int)

参数

minValue

返回的随机数的包含下限。

maxValue

返回的随机数的唯一上限。maxValue必须大于或等于minValue

退货

大于或等于minValue且小于 的32 位有符号整数maxValue;也就是说,返回值的范围包括minValue但不包括maxValue。如果minValue等于maxValueminValue则返回。

所以你要的是一个数字

  1. 大于或等于 -1
  2. 少于 1

您将在-1和 处获得的可能数字0。请注意,如果将许多-1's 和0's 添加在一起,则永远不会超过01 ...

如果您想获取数字-1,01,则需要使用:

random.Next(-1, 2);
Run Code Online (Sandbox Code Playgroud)

1禁止整数溢出