如何从随机数组中选择一个随机字符串
Posted
技术标签:
【中文标题】如何从随机数组中选择一个随机字符串【英文标题】:How to pick a random string from random array 【发布时间】: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 之间所有数字的列表,将列表打乱,然后取前十个项目。见:***.com/q/273313/491907
您还可以按 Guid 值排序并选择前 10 个元素。 OrderBy Guid.NewId()
@SteinTheRuler - 不要使用 Guids 随机性。它们只保证是唯一的,而不是随机的。
@Enigmativity 如果它给你一个可接受的结果,你可以随机使用 Guid。你也可以使用其他元素。
@SteinTheRuler - 当然,但您没有对您的评论做出免责声明。 “你也可以使用其他元素”是什么意思?
【参考方案1】:
这对你有用吗?
// make an array of 28 names
string[] names =
Enumerable
.Range(0, 28)
.Select(x => $"Person x + 1")
.ToArray();
Random rand = new Random();
// select 10 at random
string[] random10 =
names
.OrderBy(x => rand.Next())
.Take(10)
.ToArray();
//pick one at random from the 10 selected at random
string finalist = random10[rand.Next(random10.Length)];
【讨论】:
以上是关于如何从随机数组中选择一个随机字符串的主要内容,如果未能解决你的问题,请参考以下文章