没有重复数字的随机生成器
Random generator with no duplicated numbers
我有一个数组,需要容纳6个随机生成的数字。以下代码使用了我为实现无重复所做的工作。我原以为在副本中添加1会起作用,但后来它会再次出现在末尾!
userInput = document.getElementById('txtGen').value;
var numbers = new Array(6);
var msg = '';
for(var i=0;i<numbers.length;i++)
{
numbers[i] = Math.random() * userInput;
numbers[i] = Math.floor(numbers[i]);
if(numbers[i] == numbers[i-1]){
numbers[i] = numbers[i++];
}
msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}
document.getElementById('numbers').innerHTML = msg;
我也试过这个,但也没用!
for(var i=0;i<numbers.length;i++)
{
numbers[i] = Math.random() * userInput;
numbers[i] = Math.floor(numbers[i]);
for(var b=0;b<numbers.length;b++)
{
if(numbers[b] == numbers[b--]){
numbers[b] = numbers[b++];
}
}
msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}
您可以使用indexOf
来检查数字是否已经在数组中。如果是,你可以生成一个新的数字。
var userInput = document.getElementById('txtGen').value;
var numbers = new Array(6);
for (var i = 0; i < numbers.length; i++)
{
var temp = 0;
do
{
temp = Math.floor(Math.random() * userInput);
}
while (numbers.indexOf(temp) > -1)
numbers[i] = temp;
}
document.getElementById("numbers").innerHTML = numbers.join(); // <- Write numbers to div.
userInput = document.getElementById('txtGen').value;
var numbers = new Array(6),tempNo=new Array(6);
var msg = '';
for(var i=0;i<numbers.length;i++)
{
tempNo[i] = Math.random() * userInput;
if(!numbers[tempNo[i]]){
numbers[Math.floor(tempNo[i])] = Math.floor(tempNo[i]);
msg += '<input id="num' + i + '"' + 'type="text" value="' + Math.floor(tempNo[i]) + '" />';
}
}
document.getElementById('numbers').innerHTML = msg;
尝试使用关联数组
尝试此解决方案。。。
for(var i=0;i<numbers.length;i++)
{
numbers[i] = Math.random() * userInput;
numbers[i] = Math.floor(numbers[i]);
for(var b=1;b<numbers.length;b++)
{
if(numbers[b] == numbers[b--]){
numbers[b] = Math.random() * userInput;
numbers[b] = Math.floor(numbers[b]);
b=1;
}
}
msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}
var output =document.getElementById('numbers'),
numbers = new Array(6),
msg = '';
for(var i=0;i<numbers.length;i++){
numbers[i] = randomNumber()
msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}
function randomNumber(max){
max = (max > 0) ? max : 100;
var a = 1 + max*(Math.random());
return Math.round(a);
}
output.innerHTML = msg;
<div id="numbers"></div>
相关文章:
- 显示数字,然后每5秒随机更改一次(javascript)
- Javascript-如何从长度有时不是静态的随机字符串中获得3位数字
- 如果随机数字是3-Javascript的倍数,则将表单元格更改为红色
- 生成一个随机数字序列,然后用JavaScript在该序列后面附加一个大写字母
- 将随机整数分配给数组中的项,summa应该是一个固定的数字
- 如何将52个随机生成的数字打印到控制台
- 如何从自动填充随机数字的下拉菜单中生成一组文本框
- 从1-9之间的随机数字列表中选出3个相同的数字
- 如果语句是假的 JavaScript,则再次随机化数字
- 在节点中生成随机 32 位数字
- 使用 php(?) 在每个服务器日随机增加数字值
- 数字游戏 - 随机化
- Javascript - 如何使按钮生成 1-12 的随机整数,并让按钮不断产生相同的数字
- JavaScript 中的随机字母数字字符串
- 将每个选定的值替换为随机字母/数字
- 如何在任意范围内随机选择数字并使用 JavaScript 数组相加
- 创建一个中间带有随机数字的球(html画布和javascript)
- 使用setinterval在最终数字前显示随机数字
- 如何在有条件的JavaScript中生成随机数字序列
- POST随机数字段在客户端onsubmit生成