如何从列表中随机选取一个条目?

本文关键字:一个 列表 选取 随机 | 更新日期: 2023-09-27 18:03:30

我使用以下代码从列表中选择一个随机元素:

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

这是做这件事的最佳方法吗,还是我可以采用更好的方法?我特别担心的是,这是完全随机的吗?

如何从列表中随机选取一个条目?

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

每次执行new Random()时,它都被初始化。这意味着在一个紧密循环中,你会多次得到相同的值。

您应该保留单个Random实例,并在同一个实例上继续使用Next。

希望这有帮助!!

这将是异常非随机的,您必须而不是每次需要一个数字时创建一个新的Random实例。这样做会完全破坏生成器的统计属性。

即使这样,你也不能实现完美的随机性(你需要外部硬件),但它应该满足随机性的所有主要属性。

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

使用下面的代码每次生成新的数字

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