この C# プログラムはブラックジャック プログラムであると思われますが、カードを「シャッフル」して「手」を表示する必要があります。
残りは管理できると思います...誰か助けてくれませんか?
各要素をランダムな他の要素に切り替えることをお勧めします。方法は次のとおりです。
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));
}
次のような単純なものでパックを「シャッフル」できます。
var shuffled = pack.OrderBy(c => random.NextDouble());
シャッフルする 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
毎回新しいランダムを作成するとエントロピーが多少減少するため、インスタンスをグローバルにすることをお勧めします。あまりシャッフルしない場合、これは重要ではないかもしれません。
すでにここでカバーされていると思います。