C#random - if语句只输出= -1

Pal*_*dan 6 c# random

我正在尝试使我的程序输出1或-1这是我的代码到目前为止,它的唯一输出是-1.它根本不是随机的.

Random rnd = new Random();
int L = rnd.Next(0, 1);
if (L == 0)
{
    Console.WriteLine(-1);
}
else
{
    Console.WriteLine(1);
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 12

第二个参数Random.Next(int, int)给出了一个独占上限.所以你说你想要一个大于或等于0且小于1的整数.这不会为0以外的数字提供很多范围:)

从文档:

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

您还应该阅读我关于随机性的文章以避免其他常见问题.

  • @ user2966573:我建议你为自己考虑一下,而不是我为你舀勺:)想想你真正想要的上限. (10认同)

Dav*_*nan 7

rnd.Next(0, 1)返回i范围中的值0 <= i < 1.唯一这样的价值是0.

看看文档:

minValue(最小值)

键入:System.Int32

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

包括maxValue

键入:System.Int32

返回的随机数的独占上限.maxValue必须大于或等于minValue.

请注意,它minValue包含的,并且maxValue独占的.因此,更一般地说,这个next()范围内的返回值重载:

minValue <= i < maxValue 
Run Code Online (Sandbox Code Playgroud)

如果您不了解术语,在不平等,包容性手段<=>=排他性手段<或背景下>.

好吧,如果minValue == maxValue,上面的不等式并不严格,但为了更清晰的说明,我选择忽略那个角落的情况.