如何从列表中选择随机条目?

时间:2016-08-23 10:49:05

标签: c#

我正在使用此代码从列表中选择一个随机元素:

var rand = new Random();
var i = rand.Next(words.Count);
keyword = words[i].keyword;

这是实现这一目标的最佳方式还是有更好的方法可以使用?我特别关注的是这是完全随机的吗?

3 个答案:

答案 0 :(得分:4)

如果要创建多个随机数,则应保留Random实例并重复使用它。 如果您创建新实例的时间太近,它们将生成与随机生成器从系统时钟播种的相同系列的随机数。

每次执行新的Random()时都会初始化。这意味着在紧密循环中,您可以多次获得相同的值。您应该保留一个Random实例并继续在同一个实例上使用Next。

希望这有帮助!!!

答案 1 :(得分:2)

这将是绝对不随意的,每当您需要一个号码时,您必须创建一个新的Random实例。这样做完全破坏了生成器的统计属性。

即便如此,你也不会达到完美的随机性(你需要外部硬件),但它应该满足随机性的所有主要属性。

答案 2 :(得分:0)

将此行用于单次初始化:var rand = new Random();

使用以下代码每次都会生成新号码。

var i = rand.Next(words.Count);
keyword = words[i].keyword;

希望它会对你有所帮助。