ロダスをクリア:.shuffleSelf()



_.shuffleSelf


_.shuffleSelf(array,[number])
arrayの値からnumberの値をランダムに抽出して返します
1-array-ブレンドするアレイを渡す
2-number(option)-ランダムに抽出された値の数
    ↑不在時、アレイ.length
  return   整列

lodash shuffleSelf


lodash例

_.shuffleSelf([1,2,4,3,4],3);
// 호출할때마다 값이 바뀜!
// => [ 2, 4, 3 ]
// => [ 3, 4, 1 ] 
// =>  . . .

_.shuffleSelf

function shuffleSelf(array, size) {
  var index = -1,
      length = array.length,
      lastIndex = length - 1;

  size = size === undefined ? length : size;
   // size( 두번째인자 )가 없으면 array의 length가 size가 된다
   // => array전체의 값들이 랜덤하게 섞여서 반환된다
  while (++index < size) {
    // baseRandom은 아래에 설명!!
    var rand = baseRandom(index, lastIndex),
        value = array[rand];
    	// baseRandom로 얻은 array의 랜덤한 index값을 value라는 변수에 할당하고
    array[rand] = array[index];
     	// 랜덤한 index의 값을 array[index]에 저장한다.
    array[index] = value;
    	//array[index]에 baseRandom로 얻은 array의 랜덤한 index값을 넣는다
  }
  array.length = size; 
  //length를 랜덤으로 뽑을 값의 수로 변경
 
  // 그럴일은 없겠지만 만약에 size가 4인데 length가 3이라면 빈 배열값이 들어가 length를 4로 맞춰준다
  return array;
}

_.baseRandom


ランダム値を返す
最大値をパラメータの上下に設定します.
最小値を0ではなく1にします.
小数を出さないように小数を足す.(?)
  const nativeRandom = Math.random, 
        nativeFloor = Math.floor
  
  function baseRandom(lower, upper) {
    return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
    // 작은수 + 올림 ( 랜덤값 * ( 큰수 + 작은수 + 1 ) )
  }
ランダム抽出の仕方は知っていますが、なぜ低くするのかまだ分かりませんが...🤢