Commits

Inside Zhou  committed 93861c2

精简从集合中随机选取一个元素的方法。

  • Participants
  • Parent commits b66cbc9

Comments (0)

Files changed (1)

File IListExtension.cs

 		/// <param name="except">要在随机选择中排除的元素。</param>
 		/// PDL:
 		/// 生成随机索引,比较except与集合中该索引表示的元素,直至找到不相等的为止
-		public static T RandomSelect<T>(this IList src, T except) where T : IList {
+		public static T RandomSelect<T>(this IList src) {
 			if(null == src || 0 == src.Count) {
 				throw new ArgumentException("不能是空集合。");
 			}
 
-
-			if(null != except) {
-				if(!src.Contains(except)) {
-					throw new ArgumentException("要排除的元素不为null时,必须包含在集合中。");
-				}
-
-				Random random = new Random();
-				int index;
-				while(true) {
-					index = random.Next() % src.Count;
-					if(!except.Equals(src[index])) {
-						return (T)src[index];
-					}
-				}
-			}
-			else {
-				return (T)src[new Random().Next() % src.Count];
-			}
+			return (T)src[new Random().Next() % src.Count];
 		}
 
 		/// <summary>
 		/// 访问至集合头部的元素时停止。
 		public static void Shuffle(this IList src) {
 			if(null == src || 0 == src.Count) {
-				throw new ArgumentException("不能是空集合。");
+				return;
 			}
 
 			Object tmpForSwap = null;