我使用Random类来生成随机任意整数,但它总是返回相同数量的随机总是生成相同数量的
static Random rand = new Random();
public static int GetOrderID()
{
return rand.Next(Math.Abs(int.MinValue + 1), int.MaxValue);
}
通知的随机类是静态和功能外产生
我使用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
。对于任何非负整数,您可以使用没有任何参数的重载。
提示:Math.Abs(int.MinValue + 1)的值是多少?它如何与'int.MaxValue'进行比较?现在'Next(x,x)'将返回'x',答案应该比较清楚。 :) –