javascript - 将随机数生成器限制为仅输出 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--;
}
}
}
解决方案
而不是使用 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>
推荐阅读
- visual-studio - 安装nuget后如何在项目的csproj文件中添加一些行
- java - Java设计问题:对象之间共享信息
- sql-server - 如何在合并数据集之前检查行是否存在(SQL Server)
- sql - 在 SQL 中对非常大的数据集进行采样
- python - 根据求和列保留数据框值
- azure - Azure CDN Url 重写对缓存不友好
- c++ - LTO 破坏代码是否正常,如何避免?
- python - 我可以将所有数据从 sqlite 文件导入到 txt 文件 python
- javascript - 处理 es6 模块中的依赖关系,用于节点和浏览器
- c# - 等效于 emgucv csharp 中的 OpenCv c++ api Vec2f,norm, acos