首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定整数范围之间的随机数组,包含该范围内每个整数的至少一个实例

给定整数范围之间的随机数组,包含该范围内每个整数的至少一个实例
EN

Stack Overflow用户
提问于 2020-01-07 05:10:14
回答 4查看 105关注 0票数 1

我正在尝试生成一个数组,该数组包含一组随机的整数,其范围将包含每个可能整数的至少一个实例。我可以生成一个在一个范围内包含随机整数的数组,但不知道如何生成一个包含该范围内每个整数的至少一个实例的数组。我正在尝试生成一个包含84个键的数组,范围从0到40 (包括0到40)。数组应至少包含所述范围内每个可能整数的一个实例。这是我现在拥有的代码:

代码语言:javascript
复制
<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>
EN

回答 4

Stack Overflow用户

发布于 2020-01-07 05:16:26

请尝试下面的代码片段

代码语言:javascript
复制
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));

票数 0
EN

Stack Overflow用户

发布于 2020-01-07 05:19:01

我认为如果它需要一个范围之间的所有整数,那么你可以从范围之间的生成开始。那么所有其他的数字都可以是随机的。最后,只需要在数组上使用sort()

如下所示:

代码语言:javascript
复制
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);

我希望这对你有帮助!

票数 0
EN

Stack Overflow用户

发布于 2020-01-07 05:24:12

您可以创建随机索引以插入所需范围中的数字:

代码语言:javascript
复制
if (i == randomIndex)
    ints.push(startRange);
else
    ints.push(Math.floor(Math.random() * endRange) + startRange);

举个例子:

代码语言:javascript
复制
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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59619025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档