首页 > 解决方案 > 将随机数生成器限制为仅输出 50 个数字中的 20 个

问题描述

我需要一些帮助或建议我正在尝试将随机数限制为仅生成 50 个数字中的 20 个,并且当按下/单击按钮时激活它有时我也会得到重复,我会停止发生

function lottoNumbers()
    {
      var lottoNums = [];
      for(var i=0; i <1 ; i++)
      {
        var temp = Math.floor(Math.random() *50);
        if(lottoNums.indexOf(temp) == -1)
        {
          lottoNums.push(temp);
          document.getElementById('circle'+i).innerHTML = lottoNums[i];
        }
        else
        {
          i--;
        }
      }
    }

标签: javascriptarrays

解决方案


而不是使用 for 循环 - 使用while循环(即 - while length < 20)并且正如您所做的那样 - 如果数字不存在,则仅将它们推入其中。

出于演示目的 - 我正在动态构建一个列表,然后设置 li 的样式以给出一个带有边框半径的圆形;

lottoNumbers();


function lottoNumbers() {
  var lottoNums = [];
  var lottoNumStr = '';
  
  while(lottoNums.length <20) {
    var temp = Math.floor(Math.random() *50);
    if(lottoNums.indexOf(temp) == -1) {
      lottoNums.push(temp);
      lottoNumStr += '<li>' + temp + '</li>';
    }
  }
  
  document.getElementById('lottoNumList').innerHTML = lottoNumStr;
}
#lottoNumList {
  list-style: none;
}

#lottoNumList li {
 border: solid 1px #d4d4d4;
 border-radius: 50%;
 display: inline-block;
 margin: 5px;
 padding: 4px;
 width: 30px; 
 height: 30px;
 line-height: 30px;
 text-align: center;
}
<h1>Lotto Numbers</h1>
<ul id ="lottoNumList"></ul>


推荐阅读