【问题标题】: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 之间所有数字的列表,将列表打乱,然后取前十个项目。见:stackoverflow.com/q/273313/491907
  • 您还可以按 Guid 值排序并选择前 10 个元素。 OrderBy Guid.NewId()
  • @SteinTheRuler - 不要使用 Guids 随机性。它们只保证是唯一的,而不是随机的。
  • @Enigmativity 如果它给你一个可接受的结果,你可以随机使用 Guid。你也可以使用其他元素。
  • @SteinTheRuler - 当然,但您没有对您的评论做出免责声明。 “你也可以使用其他元素”是什么意思?

标签: c# arrays string random


【解决方案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)];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2011-11-13
    • 2011-09-22
    • 2014-04-03
    • 2017-01-12
    • 2015-07-29
    相关资源
    最近更新 更多