C# 使用 HashSet 从列表中获取随机不重复字符串[重复]

问题描述 投票:0回答:1

我是一名初级程序员,也是 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# list random duplicates
1个回答
0
投票

您想对列表中所有不同的元素进行洗牌。如果您使用 C#8+,可以通过一行代码实现

Random.Shared.Shuffle(_usedList.Distinct().ToList());
© www.soinside.com 2019 - 2024. All rights reserved.