从哈希集中获取随机元素?

问题描述 投票:11回答:5

我正在使用以下代码将我的文本文件加载到hashset中。

HashSet<string> hashs = new HashSet<string>(File.ReadLines("textFile.txt"));

想知道是否有任何简单的方法可以从中获得随机线吗?

假设textFile.txt包含10行,我想随机化并获取这些现有行之一。

c# hashset
5个回答
12
投票
Random randomizer = new Random();
string[] asArray = hashs.ToArray()
string randomLine = asArray[randomizer.Next(asArray.length)];

33
投票

一个简单的答案,例如接受的答案,而不必每次都枚举整个数组:


3
投票

您可以生成一个介于0和集合大小之间的随机数,然后遍历集合直到找到索引与生成的数字相同的项目。然后选择此项作为随机元素


1
投票

或者可能是针对任何枚举的更通用解决方案


0
投票

。Net Framework 3.5开始,您可以将Linq及其Enumerable.First()扩展方法使用。不指定任何条件作为参数,此方法将返回

© www.soinside.com 2019 - 2024. All rights reserved.