자바스크립트 배열 랜덤 구성하기 - 생각의 흐름

💡생각의 흐름

2018-05-03

function shuffle(arr) {
  var k = [];

  for (var i = 0, iLength = arr.length; i < iLength; i++) {
    var randomNo = Math.floor(Math.random() * iLength);
    k[i] = arr[randomNo];
    arr.splice(randomNo, 1);

    if (k[i] === undefined) {
      i = i - 1;
    }
  }

  return k;
}

생각의 흐름대로 작성하고보니 갯수가 적을 때 쓸법하다.

남들은 어떻게 하나 찾아본다.

var number = ['1', '2', '3', '4', '5', '6',  '7', '8', '9', '0', '', ''];

var randomArray = function(arr) {
  arr = arr.sort(function() {
    return .5 - Math.random();
  });
};

randomArray(number);

으음..

2018-10-05

function shuffleArray(arr) {
  for(var i = arr.length - 1; i > 0; i--) {
    var j = Math.floor(Math.random() * (i + 1));
    [arr[i], arr[j]] = [arr[j], arr[i]];
  }

  return arr;
}

slice로 배열을 제거하지 않고 셔플

2018-11-22

var randomArr = function(arr) {
  for (var i = 0, iLength = arr.length; i < iLength; i++) {
    var randomNo = Math.floor(Math.random() * iLength);
    var tempArr = arr[randomNo];
    arr[randomNo] = arr[i];
    arr[i] = tempArr;
  }

  return arr;
};

C++에서 Swap 예제를 너무 많이 봤더니.. 또 생각의 흐름대로 작성했다가 마크다운 남겨놨던게 생각나서 일단 작성본 추가 안바쁠때 다시보자

2019-08-28

function shuffleArr(arr) {
  for (let ai = arr.length - 1; ai > 0; ai--) {
    let aj = Math.floor(Math.random() * ai);
    [arr[ai], arr[aj]] = [arr[aj], arr[ai]];
  }

  return arr;
}

오랜만에 필요했는데 하고보니 작년 10/5 하고 매우 흡사…