我正在使用Random类生成任何随机整数,但它总是返回相同的数字
static Random rand = new Random();
public static int GetOrderID()
{
return rand.Next(Math.Abs(int.MinValue + 1), int.MaxValue);
}
注意随机类是静态的并且在函数
之外生成答案 0 :(得分:6)
如果
你会期待什么?Math.Abs(int.MinValue + 1)
等于
int.MaxValue
所以你的范围只包含一个数字。
答案 1 :(得分:2)
很简单:拨打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
。对于任何非负整数,您可以使用不带任何参数的重载。