1. 程式人生 > 實用技巧 >基礎類庫積累--Random類

基礎類庫積累--Random類

前言:

這個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));會降低重複率,但不代表不會出現重複。

原文地址:https://www.cnblogs.com/2828sea/p/13474102.html