从字符串列表生成随机唯一项[重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

我有一个卡片组的字符串列表,字符串是这样的,A-DIAMONDS,2-CLUBS等。

我希望能够从这个列表中随机生成5个唯一的项目。

我知道如何使用Random.sample(5)在python中执行此操作,但尝试在C#中查找解决方案。一切似乎都是随机生成的,把它放在一个列表中,生成另一个随机的,在列表中检查它并且它工作正常。

在C#中有更紧凑的方法吗?

以下是使用Linq进行改组后的完整代码。

    class Program
{
    static void Main(string[] args)
    {
        string [] cardValues = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
        string [] cardSuites = { "HEARTS", "CLUBS", "DIAMONDS", "SPADES" };
        List<string> deckOfCards = new List<string>();

        foreach(string cardsuit in cardSuites)
        {
            foreach(string cardvalues in cardValues)
            {
                deckOfCards.Add(cardvalues + "-" + cardsuit);
            }

        }

        for(int i = 0; i <= 10; i++)
        {
            List<string> pokerHand = new List<string>();
            Random rand = new Random();
            deckOfCards = deckOfCards.Select(x => new { card = x, rand = rand.Next() }).OrderBy(x => x.rand).Select(x => x.card).ToList();
            for(int x = 0; x < 5; x++)
            {
                pokerHand.Add(deckOfCards[x]);
            }
            Console.WriteLine(String.Join(", ", pokerHand));
        }


        Console.ReadLine();
    }
}

}

c# random
3个回答
© www.soinside.com 2019 - 2024. All rights reserved.