我正在尝试生成一个数组,该数组包含一组随机的整数,其范围将包含每个可能整数的至少一个实例。我可以生成一个在一个范围内包含随机整数的数组,但不知道如何生成一个包含该范围内每个整数的至少一个实例的数组。我正在尝试生成一个包含84个键的数组,范围从0到40 (包括0到40)。数组应至少包含所述范围内每个可能整数的一个实例。这是我现在拥有的代码:
<script>
ints = [];
function sortInt(a, b) {
return a - b;
}
for (i=0; i<84; i++) {
ints.push(Math.round(Math.random() * 40));
}
ints.sort(sortInt);
for (s=0; s<ints.length; s++) {
document.write(ints[s] + '<br />');
}
</script>发布于 2020-01-07 05:16:26
请尝试下面的代码片段
function generateNumbers(number, startRange, endRange) {
if (startRange > endRange) return generateNumbers(number, endRange, startRange);
const arr = [];
for (let i = startRange; i <= endRange; ++i) arr.push(i);
while(number > arr.length) {
const newNumber = Math.round(Math.random() * (endRange - startRange));
arr.push(newNumber);
}
arr.sort((a, b) => a - b);
return arr;
}
console.log(generateNumbers(84, 0, 40));
发布于 2020-01-07 05:19:01
我认为如果它需要一个范围之间的所有整数,那么你可以从范围之间的生成开始。那么所有其他的数字都可以是随机的。最后,只需要在数组上使用sort()。
如下所示:
const generate = (till, count) => {
const array = Array.from(new Array(till + 1).keys());
for (let i = till; i < count; i++) {
array.push(Math.round(Math.random() * till));
}
return array.sort((a,b) => a - b);
}
const result = generate(40, 84);
console.log(result);
我希望这对你有帮助!
发布于 2020-01-07 05:24:12
您可以创建随机索引以插入所需范围中的数字:
if (i == randomIndex)
ints.push(startRange);
else
ints.push(Math.floor(Math.random() * endRange) + startRange);举个例子:
ints = [];
let startRange = 1, endRange = 84;
let randomIndex = Math.floor(Math.random() * endRange) + startRange;
for (i=0; i < 84; i++) {
if (i == randomIndex)
ints.push(startRange);
else
ints.push(Math.floor(Math.random() * endRange) + startRange);
}
ints.sort((a,b) => a - b);
console.log(ints)
https://stackoverflow.com/questions/59619025
复制相似问题