ゲームでいくつかのカード戦術をテストできるボットを作成しています。ボットは機能しますが、問題が 1 つあります。私のカードシェイク方法はあまり良くありません。私はこのようにカードを振る:
public void ShuffelDeck()
{
for (int i = 0; i < 5; i++)
Cards = ShuffelCards(Cards);
}
private ArrayList ShuffelCards(ArrayList Cards)
{
ArrayList ShuffedCards = new ArrayList();
Random SeedCreator = new Random();
Random RandomNumberCreator = new Random(SeedCreator.Next());
while (Cards.Count != 0)
{
int RandomNumber = RandomNumberCreator.Next(0, Cards.Count);
ShuffedCards.Insert(ShuffedCards.Count, Cards[RandomNumber]);
Cards.RemoveAt(RandomNumber);
}
return ShuffedCards;
}
問題は、カード シェイク プロセスの間に一時停止せずに計算すると、少数のプレイヤーが多くのゲームに勝つことです。例えば
Player 1: 8 games
Player 2: 2 games
Player 3: 0 games
Player 4: 0 games
しかし、カード シェイク プロセスの前にダイアログを追加すると、勝利がプレイヤーに分散されます。
Player 1: 3 games
Player 2: 2 games
Player 3: 1 game
Player 4: 4 games
ランダムクラスは、このようなブルートフォースには十分ではないと思います. このような問題なくカードをシャッフルするにはどうすればよいでしょうか?
更新: 私はすでに 1 つのランダム クラスを使用しようとしました。また、カードを 1 回だけ振ろうとしました。