c # Блэкджек - нужна помощь - PullRequest
       3

c # Блэкджек - нужна помощь

0 голосов
/ 11 октября 2010

Предполагается, что эта программа на C # является программой для блэкджека, но мне нужно «перетасовать» карту и просто отобразить «HAND»

Остальное, как мне кажется, мне удастся ... может кто-нибудь мне помочь?

Ответы [ 4 ]

1 голос
/ 11 октября 2010

Вы можете "перемешать" пакет с чем-то простым:

var shuffled = pack.OrderBy(c => random.NextDouble());
1 голос
/ 11 октября 2010

Один из способов перемешать - создать новый массив и переместить карты в этот массив в случайном порядке.

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 голос
/ 11 октября 2010

Я бы порекомендовал просто переключать каждый элемент на другой случайный, вот как:

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));
}
0 голосов
/ 11 октября 2010

Я думаю, что это уже было покрыто здесь .

...