5

基本的に、10 個の数値を保持できる int 配列があるとします。つまり、各インデックスに 0 ~ 9 を格納できます (各数値は 1 回のみ)。

以下のコードを実行すると:

int[] num = new int[10];
for(int i=0;i<10;i++){
    num[i]=i;
}

私の配列は次のようになります。

[0],[1],.....,[8],[9]

しかし、コードを実行するたびに番号の割り当てをランダム化するにはどうすればよいでしょうか? たとえば、配列を次のようにします。

[8],[1],[0].....[6],[3]
4

2 に答える 2

10

配列のList<Integer>代わりに を作成し、 Collections.shuffle() を使用してシャッフルします。シャッフル後に List から int[] を構築できます。

本当に直接シャッフルしたい場合は、「Fisher-Yates Shuffle」を検索してください。

リスト手法の使用例を次に示します。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test {
  public static void main(String args[]) {
    List<Integer> dataList = new ArrayList<Integer>();
    for (int i = 0; i < 10; i++) {
      dataList.add(i);
    }
    Collections.shuffle(dataList);
    int[] num = new int[dataList.size()];
    for (int i = 0; i < dataList.size(); i++) {
      num[i] = dataList.get(i);
    }

    for (int i = 0; i < num.length; i++) {
      System.out.println(num[i]);
    }
  }
}
于 2013-03-04T07:18:15.670 に答える