题目重点:返回由n个不重复的随机数组成的数组

1、未加1前:(end -start ) * Math.random() 的 范围是[0,end-start] ,因为使用Math.floor向下取整,所以取到end-start的概率极小,所以需要+1来增大[0,end-start]的范围,+1后,变为[1,end-start+1],现在取到end-start的概率就跟其他数相等了。还有一个小小的问题,Math.random() 返回1呢,咋办,此时randomNum = start + end-start + 1 == end + 1,所以对于这种情况,需要使得randomNum = end

const _getUniqueNums = (start,end,n) => {
  let arr = []

  while(true)  {
    let randomNum = start +  Math.floor((end -start + 1) * Math.random())
    if(randomNum > end) randomNum = end
    
    if(!arr.includes(randomNum)) {
      arr.push(randomNum)
      if(arr.length === n) {
        break
      }
    }
  }

  return arr
}