我使用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',答案應該比較清楚。 :) –