カードのデッキの二重配列リストを持つプログラムを作成しています。この 1 つのデッキから配られる 2 つの「手」があります。5 枚のカードを格納する二重配列である「comHand」に 5 枚の固有のカードを配る必要があります。最初の [] は配られるカードの繰り返し (1 枚目のカード、2 枚目のカードなど) を格納し、2 番目の [] はカードのスーツを [0] に格納し、カードの番号を [1] に格納します。
コードを単純化して、3 つの固有のドローを取得できるようにしました。スーツは 1 つだけで、選択できる数字は 3 つだけです。私のコードは /// の上で正常に動作します (2 つの数値は常に一意です)。ただし、以下のコードでは一意の番号が得られない場合があります。これがなぜなのかを理解する助けを得ることができますか?
int comHand [][] = new int [5][2];
card1 = (int) (Math.random()*1);
card2 = (int) (Math.random()*3);
comHand[0][0] = card1;
comHand[0][1] = card2;
card1 = (int) (Math.random()*1);
card2 = (int) (Math.random()*3);
while (card1 == comHand[0][0] && card2 == comHand[0][1]){
card1 = (int) (Math.random()*1);
card2 = (int) (Math.random()*3);}
comHand[1][0] = card1;
comHand[1][1] = card2;
///
card1 = (int) (Math.random()*1);
card2 = (int) (Math.random()*3);
while (card1 == comHand[0][0] && card2 == comHand[0][1]){
card1 = (int) (Math.random()*1);
card2 = (int) (Math.random()*3);}
while (card1 == comHand[1][0] && card2 == comHand[1][1]){
card1 = (int) (Math.random()*1);
card2 = (int) (Math.random()*3);}
comHand[2][0] = card1;
comHand[2][1] = card2;