【问题标题】:the "min" part of the min/max isnt working - javascript最小值/最大值的“主要”部分不起作用 - javascript
【发布时间】:2015-09-10 03:11:24
【问题描述】:

所以我得到了这个脚本来查找两个用户输入的值之间的随机数。 “最大”部分有效,随机生成的数字永远不会高于更高的数字。但是生成的数字仍然是从 1 到最高数字,而不是要设置的任何“min”。我做错了什么?

查看其他代码,我尝试了“(max - min + 1) + min”公式,但它给出的结果与我现在的结果完全相同。有时它根本没有注册。这可能是我缺少的一个简单的语法问题?其他变体最终是随机生成的数字集中于“min”的值,而不是将两个数字值加在一起。例如,在 10 到 20 之间,我将掷出 8,它会在答案框中显示“810”,而不是应有的 18。

<script>
function roll_the_dice(){

var minA = document.getElementById('hp_one').value;
var maxA = document.getElementById('hp_two').value;
var rangeA = (minA,maxA);
var resultA = Math.floor(Math.random() * rangeA + 1);
document.getElementById('hp_result').value = resultA;
</script>

【问题讨论】:

  • 试试:var rangeA = Math.min(minA,maxA);。此外,在从 DOM 获取 value 时使用 parseInt。另请注意,您缺少函数的}
  • 我还没有了解 ParseInt,我将如何实现它?
  • MDN
  • 并不能真正帮助我弄清楚它应该在代码中的哪个位置大声笑是不是类似于var minA = parseInt(document.getElementById('hp_one').value;
  • 再次阅读我的第一条评论,我已经提到了它需要使用的地方。

标签: javascript random syntax numbers


【解决方案1】:

试试这个:

function roll_the_dice() {
    //parseInt to convert string values to Integer
    var minA = parseInt(document.getElementById('hp_one').value);
    var maxA = parseInt(document.getElementById('hp_two').value);
    //Math.min-> returns smallest vale from provided numbers
    var rangeA = Math.min(minA, maxA);
    document.getElementById('hp_result').value = Math.floor(Math.random() * rangeA + 1);
}

【讨论】:

  • 在使用parseInt时不要忘记基数@
  • @Tushar,我想这是一个可选参数。我认为我们不需要在这个例子中提到base..
【解决方案2】:
var resultA = Math.floor(Math.random() * (maxA - minA) + minA);

应该这样做。您将Math.random() 的输出乘以我认为是元组的输出,我认为这不是您希望它做的事情。此外,正如 Tushar 所说,您应该在用户输入上使用 parseInt(),否则您将乘以字符串。

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 2011-12-22
    • 2022-08-19
    • 2018-01-25
    • 2020-01-01
    • 1970-01-01
    相关资源
    最近更新 更多