先週はJSPの問題でしたが今回はまたJava SEな感じの問題です。
シャッフル/シャッフル/シャッフル
安全なパスワードを作りたい、音楽の再生順序を十分にランダムな順んにしたい、写真のスライドの順番をランダムにしたい、などなど、ランダムに並び替えたい、という事情は実はかなり身近な問題です。今回はそんなプログラムです。なお、今回のプログラムでは、完全にこれが答え!というのはなく、簡単な改造で十分ランダムになるという程度しか回答は用意できていませんがご了承ください。
public class Shuffle {
public static <T> void shuffle(T[] a) {
Random r = new Random();
for (int i = 0; i < a.length; i++) {
int j = r.nextInt(a.length);
int k = r.nextInt(a.length);
swap(a, j, k);
}
}
public static <T> void swap(T[] a, int i, int j) {
if (i != j) {
T tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}