【问题标题】:Displaying random numbers starting with zero cipher in JavaScript [duplicate]在JavaScript中显示以零密码开头的随机数[重复]
【发布时间】:2020-11-16 16:10:28
【问题描述】:

我正在使用 JavaScript 进行随机 pin 生成项目,我想使用 Math.random() 方法生成随机 pin,例如 035109470268,其中 pin 将以 0 开头密码和零将显示在输出中。

我该怎么做?

【问题讨论】:

  • 你能举一些例子说明你对输出的期望和不期望吗?
  • 感谢您的回复。实际上,使用 Math.random(),我们可以生成随机数,但是当有像 0345 这样的数字时,不会显示零。我希望在输出中显示零。
  • 在随机生成的数字前加零,即 var r='0'+ 你的随机生成的数字

标签: javascript html math random numbers


【解决方案1】:

这对你有帮助吗?

function getRandomPin() {
  return '0' + Math.floor(Math.random() * 900 + 100);
}

console.log(getRandomPin());
console.log(getRandomPin());
console.log(getRandomPin());

此解决方案的范围从 01000999

相反,对于下面的一个,我添加了更多关于0100下可以生成的数字的控件:

function getRandomPin() {
  var temp = Math.floor(Math.random() * 1000);
  if (temp < 100) {
    if (temp < 10) {
      return '000' + temp;
    }
    else {
      return '00' + temp;
    }
  }
  else {
    return '0' + temp;
  }
}

console.log(getRandomPin());
console.log(getRandomPin());
console.log(getRandomPin());

编辑:以下是一个解决方案,如果先前的结果不是按照评论的要求,则取出一个以 0 密码开头的数字:

var bool = false;

function getRandomPin() {
  if (bool) {
    var temp = Math.floor(Math.random() * 1000);
    bool = false;
  }
  else {
    var temp = Math.floor(Math.random() * 10000);
    bool = true;
  }
  
  if (temp < 10) {
    return '000' + temp;
  }
  else if (temp < 100) {
    return '00' + temp;
  }
  else if (temp < 1000) {
    return '0' + temp;
  }
  else {
    return temp;
  }
}

console.log(getRandomPin());
console.log(getRandomPin());
console.log(getRandomPin());
console.log(getRandomPin());
console.log(getRandomPin());
console.log(getRandomPin());

每次前一个数字至少为1000 时,建议最后一个解决方案提供一个以0 开头的数字是正确的,但这并不能阻止一个0xyz 数字在另一个@987654331 之后出现@一。

【讨论】:

  • 谢谢大家给我这么有用的答案。在这么短的时间内得到这么多高质量的答案真是太棒了。但我想知道有没有办法让这些数字随机从零开始?比如 0568 会在 4521 之后随机生成吗?这可能吗?
  • 好吧,我不太明白,但是关于我得到的,你想在你得到一个不以0开头的号码之后收到一个像0568这样的号码,比如4521,这是你的目标吗?
  • xKobalt。完全正确。你明白我的意思。
  • 好的,我刚刚修改了答案,希望对你有帮助:)
  • xKobalt。修改后的答案伙伴在哪里?
【解决方案2】:

您可以将它们显示为这样的字符串:

var pin = "0";
function randompin() {
    for(var i=0;i<3;i++) {
        pin = pin + Math.floor(Math.random() * 10).toString();
    }
    console.log(pin)
}

randompin(); 

所以你会得到一个以零开头的 4 位字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2018-07-21
    • 2020-10-18
    相关资源
    最近更新 更多