C#,Radom.Next()提供了在一定范圍生成一個隨機數的方法,我現在有個業務場景是給其他部門推送一些數據供他們做抽樣檢查處理,假設我的數據庫里面有N條數據,現在要定期給其隨機推送數據,我需要先拿出數據List,然后隨機生成若干個數據List索引,最終把這些數據推送給目標數據庫。
通過封裝,生成定量隨機數的方法如下,基本滿足所有場景:
/// <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; }