math.random有时会自动将最小数量设置为零

时间:2018-01-18 19:32:41

标签: javascript html

作为一个小小的爱好我正在创建一个随机数生成器工具,使用javascript math.random脚本和一个要求最小数量和最大数量的html表单。但我遇到的问题是,有时最小数量被设置为零用户输入的内容。这是我的HTML代码:

<form id="form" onsubmit="return false;">
<input type="text" id="minNumber" value="Minimum number" onfocus="if         (this.value == 'Minimum number') {this.value = '';}" onblur="if (    this.value == '') " />
<input type="text" id="maxNumber" value="Maximum number" onfocus="if        (this.value == 'Maximum number') {this.value = '';}" onblur="yes" />
<input type="submit" onclick="getNumber()" value="Get random number">
</form>

这是我的JavaScript代码:

function getNumber() {
var minNumber = document.getElementById("minNumber").value;
var maxNumber = document.getElementById("maxNumber").value;
var randomnumber = Math.floor(Math.random() *( + maxNumber) + minNumber);
alert("Your random number is: " + randomnumber);
}

我尝试了几种修复方法,包括:

  • 删除一些不必要的空格,+'s和1的
  • 添加更多变量

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

此示例返回指定值之间的随机整数。该值不低于min(如果min不是整数,则大于min的下一个整数),并且小于(但不等于)max。

function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
}

使用舍入来实现这一点可能很诱人,但这样做会导致您的随机数遵循非均匀分布,这可能是您无法接受的。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random#Getting_a_random_integer_between_two_values_inclusive

您应该使用addEventListener https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

替换所有“内联事件”

function getNumber() {
  var minNumber = Number(document.getElementById("minNumber").value);
  var maxNumber = Number(document.getElementById("maxNumber").value);
  var randomnumber = Math.floor((Math.random() *  (maxNumber - minNumber)) + minNumber);
  document.getElementById("output").innerText = "Your random number is: " + randomnumber;
}
<form id="form" onsubmit="return false;">
  <input type="text" id="minNumber" value="2" onblur="getNumber()" />
  <input type="text" id="maxNumber" value="10" onblur="getNumber()" />
  <input type="submit" onclick="getNumber()" value="Get random number">
</form>
<span id="output"></span>