おそらく、この問題を解決する最も簡単な方法は、線形オブジェクトにフラット化することです。4 x 5 のグリッドは 20 個のリストになることがあります。各「スロット」に番号 (0 ~ 19) を指定し、次のアルゴリズムを使用します。Java を気にしないでください。
private void randomSlotFiller(int numberOfSlots) {
List<Integer> list = new ArrayList<Integer>();
Random random = new Random();
for (int i = 0; i < numberOfSlots; i++) {
list.add(i);
}
while(!list.isEmpty()) {
System.out.print(list.remove(random.nextInt(list.size())) + " ");
}
}
アルゴリズムは次のように機能します。
- 空のリストを作成する
- リストにスロット番号を入力してください
- 無作為にスロットを選択して削除します。
明らかに、数値を出力するだけではあまり効果がないため、必要に応じてコードを変更してください。
出力例は次のようになります。
15 9 17 13 8 10 6 11 3 7 2 19 4 0 12 18 16 5 1 14
注: このアルゴリズムは、多くの反復ですべての「スロット」に均等に分散します。