Javascript 随机数js最小最大值
我试图从JavaScript的输入中获取两个数字之间的随机数。当我用数字代替max.value和min.value时,它起作用,但变量不起作用。我不明白random在js中是如何工作的,在其他编程语言中我知道它很容易做到,比如random(min,max),所以我完全不明白为什么在js中这么难。多谢各位Javascript 随机数js最小最大值,javascript,html,random,Javascript,Html,Random,我试图从JavaScript的输入中获取两个数字之间的随机数。当我用数字代替max.value和min.value时,它起作用,但变量不起作用。我不明白random在js中是如何工作的,在其他编程语言中我知道它很容易做到,比如random(min,max),所以我完全不明白为什么在js中这么难。多谢各位 函数genRanNumb(){ document.getElementById('demo').innerHTML=Math.floor(Math.random()*(max.value-mi
函数genRanNumb(){
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(max.value-min.value+1)+min.value);
}
按钮
我认为问题在于您的输入是文本,而您的随机输入需要int值
解决方案是使用javascript中的parseFloat(yourvariable)
来管理变量。就您而言,您有:
function genRanNumb() {
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(parseFloat(max.value)-parseFloat(min.value)+1)+parseFloat(min.value));
}
希望它能回答你的问题
为了更好的可读性和兼容性,您应该这样编写:
function genRanNumb() {
var max = parseFloat(document.getElementById("max").value,10),
min = parseFloat(document.getElementById("min").value,10);
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(max-min+1)+min);
}
我认为问题在于你的输入是文本,你的随机需要int值 解决方案是使用javascript中的
parseFloat(yourvariable)
来管理变量。就您而言,您有:
function genRanNumb() {
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(parseFloat(max.value)-parseFloat(min.value)+1)+parseFloat(min.value));
}
希望它能回答你的问题
为了更好的可读性和兼容性,您应该这样编写:
function genRanNumb() {
var max = parseFloat(document.getElementById("max").value,10),
min = parseFloat(document.getElementById("min").value,10);
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(max-min+1)+min);
}
你的随机数逻辑是正确的。您只需要从文本框(即字符串)中检索值,然后将它们解析为整数
函数genRanNumb(){
var min=parseInt(document.getElementById('min')。值,10);
var max=parseInt(document.getElementById('max')。值,10);
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(max-min+1)+min);
}
按钮
您的随机数逻辑是正确的。您只需要从文本框(即字符串)中检索值,然后将它们解析为整数
函数genRanNumb(){
var min=parseInt(document.getElementById('min')。值,10);
var max=parseInt(document.getElementById('max')。值,10);
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(max-min+1)+min);
}
按钮
问题在于您的值是字符串,因此当您执行以下操作时:
(max.value-min.value+1)+(min.value)
例如,它喜欢做6”+“5”
so“65”
所以试试看:
<script>
function genRanNumb() {
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(parseInt(max.value-min.value+1))+parseInt(min.value));
}
</script>
函数genRanNumb(){
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(parseInt(max.value-min.value+1))+parseInt(min.value));
}
问题在于您的值是字符串,因此当您执行以下操作时:
(max.value-min.value+1)+(min.value)
例如,它喜欢做6”+“5”
so“65”
所以试试看:
<script>
function genRanNumb() {
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(parseInt(max.value-min.value+1))+parseInt(min.value));
}
</script>
函数genRanNumb(){
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(parseInt(max.value-min.value+1))+parseInt(min.value));
}
问题在于输入元素的值始终是字符串。在编写max.value-min.value
时,由于减法运算符,JavaScript将值强制为数字。但是,当您编写0.3+“8”
时,结果是“0.38”
而不是“8.3”
。这就是为什么原始代码会给出奇怪的值,max.value
不会被添加,而是被追加。
下面是一种修复方法:首先使用单值+
运算符(或使用parseInt)将字符串强制为数字:
函数genRanNumb(){
var vMin=+最小值;
var vMax=+最大值;
生成的var=Math.floor(Math.random()*(vMax-vMin+1)+vMin);
demo.innerText=已生成;
}
按钮
问题是输入元素的值始终是字符串。在编写max.value-min.value
时,由于减法运算符,JavaScript将值强制为数字。但是,当您编写0.3+“8”
时,结果是“0.38”
而不是“8.3”
。这就是为什么原始代码会给出奇怪的值,max.value
不会被添加,而是被追加。
下面是一种修复方法:首先使用单值+
运算符(或使用parseInt)将字符串强制为数字:
函数genRanNumb(){
var vMin=+最小值;
var vMax=+最大值;
生成的var=Math.floor(Math.random()*(vMax-vMin+1)+vMin);
demo.innerText=已生成;
}
按钮
获取从最小值到最大值的随机数的备选方案
let makeGuess = function(guess){
let min = 1;
let max = 5;
let randomNumber = Math.floor(Math.random() * (max - min + 1)) + min
return guess === randomNumber;
}
console.log(makeGuess(1));
获取从最小值到最大值的随机数的备选方案
let makeGuess = function(guess){
let min = 1;
let max = 5;
let randomNumber = Math.floor(Math.random() * (max - min + 1)) + min
return guess === randomNumber;
}
console.log(makeGuess(1));
签出此。。2秒后谷歌!调试您的代码,您就会很容易地看到它为什么不工作。@pleinx为什么给定的链接会有帮助?OP已经有了公认答案中给出的公式。问题是这些值尚未从字符串转换为数字。请签出此。。2秒后谷歌!调试您的代码,您就会很容易地看到它为什么不工作。@pleinx为什么给定的链接会有帮助?OP已经有了公认答案中给出的公式。问题是这些值没有从字符串转换成数字。我刚刚检查过,parseInt()也存在@Christoph为什么你编辑了我的帖子,我不同意或拒绝?因为我很酷-另外,你是第一个得到正确答案的人,所以我只是编辑了你的答案,而不是写了另一个95%相同内容的答案。我当然可以,但为什么我没有选择批准或拒绝编辑?因为我有权编辑内容,而无需作者的批准。我刚刚检查过,parseInt()也存在@Christoph为什么你编辑我的帖子,我不同意或拒绝?因为我很酷-另外,你是第一个得到正确答案的人,所以我只是编辑了你的答案,而不是写了另一个95%相同内容的答案。我当然可以,但为什么我没有选择批准或拒绝编辑?因为我有权编辑内容,而无需作者的批准+感谢你对强迫的良好解释。对于剩下的答案,我会回答