基礎類庫積累--Random類
阿新 • • 發佈:2020-08-13
前言:
這個Random類取的隨機數,和以前寫的random.Next()有點不一樣
/// <summary> /// 獲取隨機數 /// </summary> /// <param name="minValue">隨機數的最小值</param> /// <param name="maxValue">隨機數的最大值</param> /// <returns>隨機數</returns> public static int GetRandomNumber(int minValue, int maxValue) { var tick = DateTime.Now.Ticks; System.Random random = new System.Random((int)(tick & 0xFFFFFFFFL) | (int)(tick >> 32)); System.Threading.Thread.Sleep(1); return random.Next(minValue, maxValue); }
簡介:
- 呼叫方法的時候,傳遞2個引數,一個最小值,一個最大值。
- 如果是以前的寫法:random.Next(minValue, maxValue),取值速度太快,重複率挺高的。
- 瞭解原理:Random預設建構函式取隨機數是通過當前的時間做為隨機種子,Random也可以傳遞一個int32型別的數字做為隨機種子,這樣取的隨機重複率會降低很多。
- 取隨機數不包含最小值,但是包含最大值。(minValue,maxValue]
總結:
在實際開發過程中,我們會遇到很多取隨機數的地方,有時候取的隨機數速度特別快,就會導致出現重複,如果使用Random預設建構函式,直接取random.Next(minValue,maxValue)出現重複的資料概率大大增加, System.Random random = new System.Random((int)(tick & 0xFFFFFFFFL) | (int)(tick >> 32));會降低重複率,但不代表不會出現重複。