猜想1:Random.Next()产生的随机数不会有重复。
猜想2:大量级执行Random.Next(int i)分布在各个数值上的概率是均匀的。
验证猜想1 /*如果Random.Next()产生的随机数不存在重复,那么_CunFangSuiJiShuDeList.Count应该等于执行总次数*/List _ZhiXingCiShuList = new List ();_ZhiXingCiShuList.Add(100);//一百_ZhiXingCiShuList.Add(1000);//一千_ZhiXingCiShuList.Add(10000);//一万_ZhiXingCiShuList.Add(100000);//十万_ZhiXingCiShuList.Add(1000000);//一百万StringBuilder _StringBuilder = new StringBuilder();foreach (int key in _ZhiXingCiShuList){ List _CunFangSuiJiShuDeList = new List (); Random _Random = new Random(); for (int i = 0; i < key; i++) { int _suiJiShu = _Random.Next(); //如果列表不存在该数字,则将该数字加入列表。 if (_CunFangSuiJiShuDeList.Contains(_suiJiShu) == false) { _CunFangSuiJiShuDeList.Add(_suiJiShu); } } _StringBuilder.AppendFormat("执行{0}次结果:{1}" + Environment.NewLine, key, _CunFangSuiJiShuDeList.Count); }Console.Write(_StringBuilder.ToString());Console.ReadLine(); 执行结果截图: 从结果看,执行一百次、一千次及一万次时,不存在重复,执行十万次时,出现一次重复,一百万次出现二百三十二次重复。说明Random.Next()会产生重复随机数,但只有在超过一定量级时才会,并且量级越大重复值个数越多。
验证猜想2 static void Main(string[] args) { List _ZhiXingCiShuList = new List (); _ZhiXingCiShuList.Add(1000);//一千 _ZhiXingCiShuList.Add(10000);//一万 _ZhiXingCiShuList.Add(100000);//十万 _ZhiXingCiShuList.Add(1000000);//一百万 StringBuilder _StringBuilder = new StringBuilder(); foreach (int key in _ZhiXingCiShuList) { Dictionary