LANG SELRCT

コードを書く場所についてはこちら

2018年2月18日日曜日

JavaScriptで配列をシャッフルする(先頭の要素とランダム位置の要素を入れ替える)


こういう配列があって
["hare", "ame", "yuki", "kumori", "kaminari"]


このように順番を入れ替えてシャッフルしたい
yuki, kumori, kaminari, ame, hare


先頭の要素と他の要素(ランダムで決める)を入れ替えることを繰り返して取得する例



コード.gs
function shuffle(){
  var array = ["hare", "ame", "yuki", "kumori", "kaminari"]
  var len = array.length;
  for(var i = 0; i < len; i++){
    var rand = Math.floor(Math.random() * len);

    var array_0 = array[0];
    var array_rand = array[rand];

    array[rand] = array_0;
    array[0] = array_rand;
    Logger.log(array)
  }
  Logger.log("【result】" + array)
}
意訳
この機能は以下を実行する
シャッフルしたい配列を用意する
配列の要素数を取得する
以下を要素数分繰り返す
ランダム値に配列の要素数をかけて小数点を切り捨てて、配列の何番目の要素を入れ替えるかランダムで決める

arrayの先頭の要素
arrayのランダム位置の要素

先頭の要素にランダム位置の要素を入れて
ランダム位置の要素に先頭の要素を入れる
2つの位置を入れ替えた配列をログに出す

最終的に出来上がった配列をログに出す



実行結果