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

时间:2014-05-07 10:48:33

标签: c# string list random

我有一种猜测像刽子手的话。

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

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

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

编辑1:

更好的意思是(更好的性能或更好的随机性或其他需要考虑的改进)

编辑2:

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

编辑3:

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

1 个答案:

答案 0 :(得分:4)

我会考虑做这样的事情:

var rnd = new Random();
var words = new Stack<string>(GetWordsList().OrderBy(w => rnd.Next()));

然后你只需.Pop()堆栈中的下一个值来获取下一个随机词。

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