【问题标题】:5 random numbers, first number not zero5个随机数,第一个数字不为零
【发布时间】:2018-08-14 18:09:42
【问题描述】:

我有一个代码,它产生 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);

【问题讨论】:

  • 只需添加1....
  • 嗯,不是重复的...:)

标签: javascript arrays loops random


【解决方案1】:

您可以在开始时插入一个零检查并继续。

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);

【讨论】:

    【解决方案2】:

    这很简单,因为您的数字不会重复。如果第一个数字是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%;}

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 2020-12-30
      • 2012-04-12
      • 2023-03-08
      相关资源
      最近更新 更多