0

この C# プログラムはブラックジャック プログラムであると思われますが、カードを「シャッフル」して「手」を表示する必要があります。

残りは管理できると思います...誰か助けてくれませんか?

4

4 に答える 4

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));
}
于 2010-10-11T13:53:12.260 に答える
1

次のような単純なものでパックを「シャッフル」できます。

var shuffled = pack.OrderBy(c => random.NextDouble());
于 2010-10-11T14:35:51.720 に答える
1

シャッフルする 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毎回新しいランダムを作成するとエントロピーが多少減少するため、インスタンスをグローバルにすることをお勧めします。あまりシャッフルしない場合、これは重要ではないかもしれません。

于 2010-10-11T13:37:42.453 に答える
0

すでにここでカバーされていると思います。

于 2010-10-11T13:36:21.053 に答える