C# Random生成多個不重複的隨機數萬能接口

      C#,Radom.Next()提供了在必定範圍生成一個隨機數的方法,我如今有個業務場景是給其餘部門推送一些數據供他們作抽樣檢查處理,假設個人數據庫裏面有N條數據,如今要按期給其隨機推送數據,我須要先拿出數據List,而後隨機生成若干個數據List索引,最終把這些數據推送給目標數據庫。數據庫

   經過封裝,生成定量隨機數的方法以下,基本知足全部場景:dom

        /// <summary>
        /// 根據隨機數範圍獲取必定數量的隨機數
        /// </summary>
        /// <param name="minNum">隨機數最小值</param>
        /// <param name="minNum">是否包含最小值</param>
        /// <param name="maxNum">隨機數最大值</param>
        /// <param name="minNum">是否包含最大值</param>
        /// <param name="ResultCount">隨機結果數量</param>
        /// <param name="rm">隨機數對象</param>
        /// <param name="isSame">結果是否重複</param>
        /// <returns></returns>
        private static List<int> GetRandom(int minNum, bool isIncludeMinNum, int maxNum, bool isIncludeMaxNum, int ResultCount, Random rm, bool isSame)
        {
            List<int> randomList = new List<int>();
            int nValue = 0;

            #region 是否包含最大最小值,默認包含最小值,不包含最大值
            if (!isIncludeMinNum) { minNum = minNum + 1; }
            if (isIncludeMaxNum) { maxNum = maxNum + 1; }
            #endregion

            if (isSame)
            {
                for (int i = 0; randomList.Count < ResultCount; i++)
                {
                    nValue = rm.Next(minNum, maxNum);
                    randomList.Add(nValue);
                }
            }
            else
            {
                for (int i = 0; randomList.Count < ResultCount; i++)
                {
                    nValue = rm.Next(minNum, maxNum);
                    //重複判斷
                    if (!randomList.Contains(nValue))
                    {
                        randomList.Add(nValue);
                    }
                }
            }

            return randomList;
        }
相關文章
相關標籤/搜索