最小/最大的“min”部分不起作用 - javascript

时间:2015-09-10 03:11:25

标签: javascript random syntax numbers

所以我有这个脚本在两个用户输入的值之间找到一个随机数。 “max”部分起作用,随机生成的数字永远不会高于更高的数字。但是生成的数字仍然是1到最高数字,而不是设置为“min”的数字。我做错了什么?

看看其他代码我已经尝试了“(max - min + 1)+ min”公式,但它给出了与我现在完全相同的结果。有时它根本没有注册。这可能是一个简单的语法问题我想念?其他变化以随机生成的数字与“min”的值集合而不是将两个数值相加在一起而结束。例如,在10到20之间,Ill滚动一个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>

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

var resultA = Math.floor(Math.random() * (maxA - minA) + minA);

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