所以我有这个脚本在两个用户输入的值之间找到一个随机数。 “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>
答案 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()
,否则你将乘以字符串。