2017-11-03 11 views
2

私は配列SuperCardのクラスを使用して、SuperCardの配列として返されるすべての値を使用して、配列cardArrayから5枚のカードをランダム化することを任されています。私が悩んでいるのは、RandomクラスのNext()メソッドを使用するために私のカスタムタイプSuperCardintにキャストする方法です。私がこれまでにしてきたことは、カスタムタイプをintに変換する

SuperCard[] hand = new SuperCard[5]; 
for (int index1 = 0; index1 <= 4; index1++) 
{ 
    hand[index1] = rand.Next(cardArray[0], cardArray[51]);//cant figure out how to cast this 
} 

私はrand.Next((int)cardArray[0],(int)cardArray[51]);をキャストしようとすると、私はエラーが「intに型のSuperCardを変換できません」を取得。配列を整数配列に変換できますが、もう一度は戻せません。

+4

0から51までの乱数を選んで、この乱数で 'cardArray'の' SuperCard'を取得するのはどうですか? – Prisoner

+0

ランダムな生の結果は常に、その番号から任意の種類のオブジェクトをマップ(ルックアップ)できる数値でなければなりません。単にそれを考えるだけです。だからこそ、大きな地球の中にすべてのゲスト(人体?)を入れずにそこを回転させて、誰がロトに勝つのかを見つけ出し、番号のついたすべての小さなボールを入れて、賞を与えるために番号。 –

+0

スーパーカードのデータ構造は何ですか? – codemaker

答えて

1

すぐに問題が解決されるのは、cardArrayのインデックスをあなたの乱数に使用し、要素自体ではなく、すなわち:cardArrayの有効なインデックスの範囲は、乱数のために使用され、返された数は、実際のカードを選択するために、実際のインデックスcardArrayに使用されていること

hand[index1] = cardArray[rand.Next(0, cardArray.Length)]; 

注意。他の点の

カップル:

  • 0ある範囲の下限をとる方法Next(int)オーバーロードがあります。だから代わりにrand.Next(cardArray.Length)を使うことができます。
  • コードは、今度は同じカードを複数回選ぶことができます。あなたが本当にやりたいことは、配列をシャッフルして、最初の5つの要素を選択するだけです。例えば、 Best way to randomize an array with .NETあなたのコードでこの次の障害に対処します。
関連する問題