c#Blackjack - 需要帮助

时间:2010-10-11 13:28:44

标签: c# shuffle

这个C#程序假设是一个二十一点程序,但我需要'SHUFFLE'卡并只显示'HAND'

其余我认为我可以管理......有人可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

一种改组的方法是创建新阵列并以随机顺序将卡片移入该阵列

List<Card> unshuffled = new List<Card>(pack);
pack = new Card[NUM_CARDS];
Random r = new Random()
for(int card = 0; card < NUM_CARDS; card++)
{
    pack[card] = unshuffled[r.Next(0, unshuffled.Count -1)];
    unshuffled.remove(pack[card]);
}

您可能希望将Random实例设为全局,因为每次创建新的随机数会稍微降低熵。如果你没有洗牌,这可能并不重要。

答案 1 :(得分:1)

我建议只将其他元素切换为随机,以下是:

private void switchElements(Card[] pack, int nr_1, int nr_2) {
    Card temp = pack[nr_1];
    pack[nr_1] = pack[nr_2];
    pack[nr_2] = temp;
}

public void shuffle(Card[] pack) {
    for (int i = pack.length - 1; i > 0; i--) 
        switchElements(pack, i,random.Next(0,i));
}

答案 2 :(得分:1)

你可以用一些简单的东西“洗牌”一包:

var shuffled = pack.OrderBy(c => random.NextDouble());

答案 3 :(得分:0)

我认为它已经涵盖here