5个随机数,第一个数不为零

时间:2018-08-14 18:09:42

标签: javascript arrays loops random

我有一个代码,可在0-9之间产生5个唯一的随机数。但是我不希望第一个数字为零。

我该如何解决?

var arr = []
while(arr.length < 5){
    var randomnumber = Math.floor(Math.random()*10);
    if(arr.indexOf(randomnumber) > -1) continue;
    arr[arr.length] = randomnumber;
}
document.write(arr);

2 个答案:

答案 0 :(得分:0)

这很简单,您的电话号码不会重复。如果第一个数字为0,只需将其与随机索引值交换即可。在这里,我使用了索引3

var arr = []
while (arr.length < 5) {
  var randomnumber = Math.floor(Math.random() * 10);
  if (arr.indexOf(randomnumber) > -1) continue;
  arr[arr.length] = randomnumber;
}
if (arr[0] === 0) {
  arr[0] = arr[3];
  arr[3] = 0;
}
console.log(arr);
.as-console-wrapper {top: 0; height: 100%;}

测试创建100个不同的案例:

var all = [];
var arr = [];
for (var i = 0; i < 100; i++) {
  arr = [];
  while (arr.length < 5) {
    var randomnumber = Math.floor(Math.random() * 10);
    if (arr.indexOf(randomnumber) > -1) continue;
    arr[arr.length] = randomnumber;
  }
  if (arr[0] === 0) {
    arr[0] = arr[3];
    arr[3] = 0;
  }
  all.push(arr.join(", "));
}
console.log(all);
.as-console-wrapper {top: 0; height: 100%;}

答案 1 :(得分:0)

您可以在开始时插入零校验,然后继续。

var array = [],
    randomnumber;

while (array.length < 5) {
    randomnumber = Math.floor(Math.random() * 10);
    if (array.indexOf(randomnumber) > -1 || !array.length && !randomnumber) continue;
    array.push(randomnumber);
}

console.log(array);