如何在指定范围内生成随机数但排除某些数?

18

基本上我会在0-24之间随机选择一个数字:

Math.floor(Math.random() * myArray.length); // myArray contains 25 items
假设生成的数字为8,现在我想要在同样的0-24范围内获取另一个数字,但这一次,我不想要8。下一次,我可能会得到15。现在我想要再次随机,但我不想要8或15。目前我处理的方法是使用do while循环,如果生成的数字与之前相同,我就重新生成。这是我的一项作业的一小部分,实际上,我已经成功地满足了所有要求,所以我想正确地写出来,不会出错。

请参考以下链接:https://dev59.com/LUrSa4cB1Zd3GeqPYbCY#1858800 - paxdiablo
请参见以下链接:https://dev59.com/-nI_5IYBdhLWcg3wF_B3 - Jeffz
11个回答

-1

<div id="number" style="color: red; margin-left: 200px;">array</div>
<div id="arr" style="color: red; margin-left: 200px;">length</div>
<script>
  var arrayOfIndexesToExclude = new Array();
  function getRandomWithManyExclusions(){
    var rand = null;
      
     do{
       rand = Math.round(Math.random() * ( 9));
       if(arrayOfIndexesToExclude.length >= 10){
        arrayOfIndexesToExclude.length = 0;       
       }
    }while(arrayOfIndexesToExclude.includes(rand));
   
   arrayOfIndexesToExclude.push(rand);  
    
    document.getElementById("number").innerHTML = arrayOfIndexesToExclude;
    document.getElementById("arr").innerHTML = arrayOfIndexesToExclude.length;
  }
</script>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接