読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

配列のシャッフル

javascript

検索しないで自分で考えたら、下のようなのができた。均等にランダムになるといいな。自信ない。

function shuffle(list) {
  var mark = {},
      ret = [],
      max = list.length,
      n = null;
  while (max--) {
    n = Math.random() * max | 0;
    while (n in mark) n = mark[n];
    mark[n] = max;
    ret.push(n);
  }
  return ret;
}

shuffle([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); // [8, 1, 4, 5, 0, 9, 2, 6, 3, 7]