请补全JavaScript代码,实现一个函数,要求如下:
1. 根据输入的数字范围(包括)和随机数个数生成随机数
2. 生成的随机数存储到数组中,返回该数组
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
const _getUniqueNums = (start,end,n) => {
// 补全代码
var arr = new Array()
while(n > 0){
let ch = end - start;
let num = Math.round(Math.random()*ch + start);
if(arr.indexOf(num) == -1){
arr.push(num);
}else{
continue;
}
n--;
}
return arr;
}
</script>
</body>
</html>
const _getUniqueNums = (start,end,n) => { // 补全代码 // 创建随机数组 let randomN = Array(n).fill(start).map(x => x + Math.random()*(end-start)) // 去重 return [... new Set(randomN)] }
return Array.from(new Array(n),_=>Math.floor(Math.random() * (end - start + 1) + start))
<script> const _getUniqueNums = (start, end, n) => { // 补全代码 let arr = []; while (arr.length < n) { value = Math.floor(Math.random() * (end - start + 1)) + start; arr.push(value); quchong(); } function quchong() { for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] == arr[j]) { //如果两个元素相等,则删除j对应的元素 arr.splice(j, 1); //删除了j位置的元素,后面元素会自动补位,此时j位置元素不会再被比较 //因此需要再比一次j位置元素,使j-- j--; } } } } return arr; } </script>
const _getUniqueNums = (start,end,n) => { // 补全代码 let arr=Array(n).fill(0); let result= arr.reduce((pre,now)=>{ now=randomNum(start,end); if(!pre.includes(now)){ return pre.concat(now); } return pre; },[]) return result; } const randomNum=(min,max)=>{ return Math.floor(Math.random()*(max-min+1)+min); }
// 方法一(map) const _getUniqueNums = (start,end,n) => { const arr = [] const randomNum = () => { const data = Math.floor(Math.random() * (end - start + 1)) + start return arr.includes(data) ? randomNum() : data } Array(n).fill('').map(() => arr.push(randomNum())) return arr } // 方法二(while(true)) const _getUniqueNums = (start,end,n) => { const arr = [] while(true) { const data = Math.floor(Math.random() * (end - start + 1)) + start !arr.includes(data) && arr.push(data) if (arr.length >= n) return arr } }
<script> const _getUniqueNums = (start,end,n) => { // 补全代码 // 1. 排除n大于数字范围的情况 if (n > end + 1 - start) return []; // 2. 其他情况 var res = []; for (var i = 0; i < n; i++) { var num; // 循环条件控制新数组中不含有相同元素 do { // 获取start ~ end之间的随机整数 num = Math.floor(Math.random() * (end + 1 - start)) + start; } while(res.includes(num)); res.push(num); } return res; } </script>
const _getUniqueNums = (start,end,n) => {//2 10 4 var setArr=[],arr=[]; for(let i=0;i<end*10;i++){//获得足够长的数组长度,免得去重后长度不足 var randNum=Math.floor(Math.random()*(end-start))+start; arr.push(randNum); } setArr=Array.from(new Set(arr));//去重后的数组 return setArr.slice(0,n);//截取前n个元素并返回它 }