一种方法是创建一个数组来存储现有选择,将选定的元素推入数组,检查该数组是否包含该元素,以及数组存储的值
.length是否大于或等于最大范围减去最小范围。
从问题的描述中尚不清楚,一旦返回范围中的所有元素,将发生什么?
var range = [10, 20];var not = [];function randomRange(range, n) { if (not.length >= range[1] - range[0]) { return "all numbers in range used" } var curr = []; var res = []; for (let i = range[0]; i < range[1]; i++) { if (!not.some(function(num) { return i == num }) && not.length < range[1] - range[0]) { curr.push(i) } } for (let i = 0; i < n; i++) { var j = curr.splice(Math.floor(Math.random() * curr.length), 1)[0]; res[i] = not[not.length] = j; } return res.filter(Boolean)}console.log(randomRange(range, 3));console.log(randomRange(range, 3));console.log(randomRange(range, 3));console.log(randomRange(range, 3));console.log(randomRange(range, 3));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)