【发布时间】:2020-10-04 08:32:17
【问题描述】:
我从 28 中选择了 10 个随机数组,现在我试图从 10 中选择一个随机 1,但似乎无法弄清楚如何。这是我的代码:
Random rand = new Random();
int[] array = new int[10];
int count = 0;
for (int i = 0; i < array.Length; i++)
{
int final = rand.Next(28);
while (final == array[0] || final == array[1] || final == array[2] || final == array[3] || final == array[4] || final == array[5] || final == array[6] || final == array[7] || final == array[8] || final == array[9])
{
final = rand.Next(10);
}
array[i] = final;
count++;
Console.WriteLine($"#{count} player {array[i]}");
string finalists = names[final].firstname.ToString();
Console.WriteLine($"Finalist: {finalists}");
Thread.Sleep(2000);
}
非常感谢您的帮助
【问题讨论】:
-
您是否尝试过类似
array[rand.Next(10)]的方法来从最初的随机十中获得最终的随机选择?顺便说一句,获取十个数字的更有效方法可能是生成一个包含 0-28 之间所有数字的列表,将列表打乱,然后取前十个项目。见:stackoverflow.com/q/273313/491907 -
您还可以按 Guid 值排序并选择前 10 个元素。 OrderBy Guid.NewId()
-
@SteinTheRuler - 不要使用 Guids 随机性。它们只保证是唯一的,而不是随机的。
-
@Enigmativity 如果它给你一个可接受的结果,你可以随机使用 Guid。你也可以使用其他元素。
-
@SteinTheRuler - 当然,但您没有对您的评论做出免责声明。 “你也可以使用其他元素”是什么意思?