随机总是生成相同的数字

本文关键字:数字 随机 | 更新日期: 2023-09-27 18:30:11

我使用Random类生成任何随机整数,但它总是返回相同的数字

static Random rand = new Random();
public static int GetOrderID()
{           
     return rand.Next(Math.Abs(int.MinValue + 1), int.MaxValue);
}

请注意,随机类是静态的,并且是在函数

随机总是生成相同的数字

之外生成的

如果

Math.Abs(int.MinValue + 1) 

等于

int.MaxValue

所以你的范围只包含一个数字。

很简单:调用Math.Abs将删除数字中的符号。由于最小整数是-2,147,483,648,其绝对值(由1递增)是2,147,483,647,其等于int.MaxValue的绝对值。

所以当调用Math.Abs(int.MinValue + 1), int.MaxValue时,您总是得到2,147,483,647作为返回值,对吗?

如果您需要任意int,则可以使用rand.Next(int.MinValue, int.MaxValue)而不使用Math.Abs。对于任何非负整数,您可以使用不带任何参数的重载。