题目重点:返回由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 }