我有一种猜测像刽子手的话。
这是我用来从单词列表中选择单词的代码:
List<string> words = GetWordsList();
int index = new Random().Next(words.Count);
string random = words[index];
有没有更好的方法从单词列表中获取随机项?
更好的意思是(更好的性能或更好的随机性或其他需要考虑的改进)
我会根据玩家猜测单词的时间每15-30秒调用一次这些行。
我不知道它是否有用,但是为了获得有关上下文的更多信息,我会在这些代码行之后从列表中删除该项。
答案 0 :(得分:4)
我会考虑做这样的事情:
var rnd = new Random();
var words = new Stack<string>(GetWordsList().OrderBy(w => rnd.Next()));
然后你只需.Pop()
堆栈中的下一个值来获取下一个随机词。
请注意,只在应用中实例化一次Random
实例,以避免产生与快速连续调用代码相关的非随机值。