我是一名初级程序员,也是 C# 新手,我正在尝试从列表中获取不重复的随机字符串。一旦列表中的每个字符串被使用一次,我希望它重新开始并再次使用该列表。我正在尝试使用 HashSet 来存储使用过的字符串,然后从主题标签列表中重新填充原始列表。列表和随机随机都已初始化。
公共字符串 GetRandomPrompt() {
if (_usedList.Count == 0)
{
foreach (string s in _usedList)
{
_prompts.Add(s);
}
_usedList.Clear();
}
string randomPrompt = _prompts[random.Next(_prompts.Count)];
_usedList.Add(randomPrompt);
_prompts.Remove(randomPrompt);
return randomPrompt;
}
提示在使用一次之前会重复出现。
您想对列表中所有不同的元素进行洗牌。如果您使用 C#8+,可以通过一行代码实现
Random.Shared.Shuffle(_usedList.Distinct().ToList());