2016-09-06 3 views
0

タイトルと同様に、配列のすべてのオブジェクトをランダムに描画し、描画された番号が最も小さいオブジェクトを削除する必要があります。 1つの方法は、すべての描画された値を保存し、それらを互いに比較することです。これを行う有効な方法がありますか? Pesudoコード:配列内のオブジェクトごとに乱数を描画し、値が最も小さいオブジェクトを削除する

while(!myArray.isEmpty) { 
    for(String str : myArray) { 
     // draw a random number 
     // do some more stuff/save number into a map. 
    } 
// remove object with lowest number (or draw again if there is conflict between lowest numbers) 
} 
+0

ランダムインデックスで1つを削除しないのはなぜですか。 – shmosel

+0

良い質問です。私は自分のゲームのユーザーのためにデッキからランダムなカードを引き出し、最も低いカードを持つユーザーを取り除く必要があります。それから最後まで別のラウンド。 – user6657161

答えて

2

まずあなたが本当に効率的に配列から要素を「削除」することはできませんので、私はListを使用することをお勧めします。また、すべてのラドム番号を保存してから、最低のものを探す必要はありません。

while(!myList.isEmpty()) { 
    double lowestRandom = 1.0; 
    int lowestIndex; //for efficient removal, save index instead of element 
    for(int i = 0; i < myList.size(); i++) { 
    double random = Math.random(); 
    if(random < lowestRandom) { 
     lowestRandom = random; 
     lowestIndex = i; 
    } 
    } 
    myList.remove(lowestIndex); 
} 
+0

よろしくお願いします。あなたは私の脳を過熱から救った。ソリューションは非常にシンプルですが、わかりません。それはなぜ私はstackoverflowが大好きです。 – user6657161

+0

'lowestRandom'を何らかの'> = 1'で初期化して、最初の繰り返しで 'random

+0

問題はありません。初心者ではない。私はちょうどより少ない睡眠で私の脳をオーバークロックしました。私の目を開いておくのが難しいM。 Evrはあなたに起こった? – user6657161

関連する問題