c# - 没有重复的随机名称选择器?
问题描述
我正在从指定的列表中创建一个简单的名称选择器。我应该如何修改它以使其不重复已经“挑选”的名称?
static void Main(string[] args)
{
string[] Names = { "Erik", "Levente", "Noel", "Áron", "Krisztián", "Kristóf", "Bence", "Roland", "Máté", "László", "Bálint" ,
"Regina", "Brigitta", "Gréta", "Hédi", "Hanna", "Boglárka", "Jázmin", "Réka", "Alexandra", "Rebeka", "Lili", "Luca", "Zsófi"};
Random rnd2 = new Random();
Console.WriteLine("Az ID : '1' eszköz nyertese: " + Names[rnd2.Next(0, Names.Length - 1)]);
Random rnd3 = new Random();
Console.WriteLine("Az ID : '2' eszköz nyertese: " + Names[rnd2.Next(0, Names.Length - 1)]);
Random rnd4 = new Random();
Console.WriteLine("Az ID : '3' eszköz nyertese: " + Names[rnd2.Next(0, Names.Length - 1)]);
Random rnd5 = new Random();
Console.WriteLine("Az ID : '4' eszköz nyertese: " + Names[rnd2.Next(0, Names.Length - 1)]);
Random rnd6 = new Random();
Console.WriteLine("Az ID : '5' eszköz nyertese: " + Names[rnd2.Next(0, Names.Length - 1)]);
Random rnd7 = new Random();
Console.WriteLine("Az ID : '6' eszköz nyertese: " + Names[rnd2.Next(0, Names.Length - 1)]);
Console.ReadKey(true);
}
解决方案
您可以通过存储您已经使用的内容来确保没有重复,List<string>
例如:
string[] names = new string[] { "bob", "james", "tim", "amanda", "lisa" }
List<string> alreadyUsed = new List<string>();
Random r = new Random();
while (alreadyUsed.Count < names.Length) {
int index = r.Next(0, names.Length);
if (!alreadyUsed.Contains(names[index])) {
alreadyUsed.Add(names[index]);
Console.WriteLine($"{names[index]} was added.");
}
}
推荐阅读
- linux - 如何将 shell 脚本调用命令传递给日志文件?
- windows - 是否在扫描连接的设备之前启动了所有 Windows 服务?
- java - 为什么我无法使用“setImageRecource”来更改 Android Studio 中 ImageView 使用的可绘制对象?
- docker - 如何列出群模式节点?
- java - 如何使用 Apache BEAM 在 BigQuery 中执行快速联接
- python - 删除这个 Seaborn 人物中产生的两个传说之一?
- python - Django 花费很长时间来提供生成的静态文件
- excel - 使用 VBA 计算过滤的行数
- sqlite - SQLite 返回不适当的周数
- regex - 在 vim 中的二元运算符周围插入空格