从字符串列表中选择随机字符串的更好方法

csh*_*aml 2 c# string random list

我有一个猜单词的游戏,比如刽子手。

这是我用来从单词列表中选择一个单词的代码:

List<string> words = GetWordsList();
int index = new Random().Next(words.Count);
string random = words[index];
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法从单词列表中获取随机项目?

编辑1:

我所说的更好是指(更好的性能或更好的随机性或其他需要考虑的改进)

编辑2:

我根据玩家猜测单词所花费的时间,每 15-30 秒调用一次这些行。

编辑3:

我不知道它是否有用,但为了获得有关上下文的更多信息,我在这些代码行之后从列表中删除了该项目。

Eni*_*ity 5

我会考虑做这样的事情:

var rnd = new Random();
var words = new Stack<string>(GetWordsList().OrderBy(w => rnd.Next()));
Run Code Online (Sandbox Code Playgroud)

然后,您只需.Pop()从堆栈中取出下一个值即可获得下一个随机单词。

请注意,Random在应用程序中仅实例化实例一次,以避免生成与快速连续调用代码相关的非随机值。