获取Dictionary中不重复的随机数(返回Dictionary):
public static Dictionary<TKey, TValue> RandomValues<TKey, TValue>(Dictionary<TKey, TValue> allDic, int randomCount)
{
System.Random rand = new System.Random();
Dictionary<TKey, TValue> newDic = new Dictionary<TKey, TValue>();
int size = allDic.Count;
randomCount = randomCount > size ? size : randomCount;
List<TKey> values = Enumerable.ToList(allDic.Keys);
while (newDic.Count < randomCount)
{
TKey tk = values[rand.Next(size)];
if (!newDic.Keys.Contains(tk))
{
newDic[tk] = allDic[tk];
}
}
return newDic;
}
获取List中不重复的随机数(返回List):
public static List<TKey> RandomValues<TKey>(List<TKey> allList, int randomCount)
{
System.Random rand = new System.Random();
List<TKey> newList = new List<TKey>();
int size = allList.Count;
randomCount = randomCount > size ? size : randomCount;
//List<TKey> values = Enumerable.ToList(allList.Keys);
while (newList.Count < randomCount)
{
TKey tk = allList[rand.Next(size)];
if (!newList.Contains(tk))
{
newList.Add(tk);
}
}
return newList;
}
这两个方法分别实现了从Dictionary和List中随机抽取不重复元素的功能。在抽取过程中,它们确保了返回的元素集合不包含重复项,同时限制了抽取的数量不超过原始集合的大小。通过使用Random类生成随机索引,并检查新集合中是否已存在该元素,来避免重复。这两个函数对于需要进行随机采样操作的场景非常实用。
11万+

被折叠的 条评论
为什么被折叠?



