【问题标题】:how can I get n random names from the list given by user?如何从用户给出的列表中获取 n 个随机名称?
【发布时间】:2026-01-17 06:15:01
【问题描述】:

我确实写过,但它只是名字:

var namenListe = new List<string>();
while(true)
{
    Console.WriteLine("Geben Sie die Namen ein ; "); 
    string name = Console.ReadLine();
    Console.WriteLine("Die namen : ");
    namenListe.Add(name);

    for (int i = 0; i < namenListe.Count; i++)
    {
        Console.WriteLine(namenListe);
    }

【问题讨论】:

  • 1.随机播放列表(请参阅Fisher-Yates Shuffle)。 2.Take the first N items from the list.
  • 另外,你为什么要标记[n]?它的标签描述是:“n 是用于管理多个 Node.js 版本的 CLI。” - 我不明白这与您关于 C# 的问题有何关系?我已经为你删除了。
  • @Llama 因为 “得到 n 个随机名称” ? ¯\_(ツ)_/¯

标签: c# random


【解决方案1】:
    private static readonly Random random = new();

    static void Main(string[] args)
    {
        while (true)
        {
            Console.WriteLine("Enter a set of comma separated name here:");
            var names = Console.ReadLine();
            
            if (string.IsNullOrWhiteSpace(names))
            {
                Console.WriteLine("Bad name input, try again \n");
                continue;
            }
            
            Console.WriteLine("Enter number of randomly selcted named:");
            var count = Console.ReadLine();

            if (!int.TryParse(count, out var nameCount))
            {
                Console.WriteLine("Bad name count input, try again \n");
                continue;
            }

            // Split the names.
            var nameCollection = names.Split(',', StringSplitOptions.TrimEntries).ToList();
            
            // Shuffle names.
            nameCollection = nameCollection.OrderBy(_ => random.Next()).ToList();
            
            Console.WriteLine($"Your randomly selected {nameCount} names are : {string.Join(", ", nameCollection.Take(nameCount))}\n\n");
        }
    }

【讨论】:

  • 但我想要这样的东西:例如:输入:sara, jana, jan, paul 然后当我写 3 时,我变成了 3 个这样的随机名称,例如:输出 = jan,jana,萨拉
【解决方案2】:

我认为您需要创建一个随机数,范围从所需的最小名称数到最大名称,然后使用它来确定是否打印名称.. 就像您的随机数是五个..诠释 x = 0; if (x

【讨论】:

  • 包括 Math.h?你是怎样做的?是var maths = File.ReadAllText("Math.h");吗?
最近更新 更多