我正在尝试使用以下代码构建一个在一个范围内(从/到)生成随机数的Web应用程序:
function generateRandom(rFrom, rTo)
{
var num;
num = Math.floor(rFrom + (1 + rTo - rFrom) * Math.random());
return num;
}
function btGenerate_onClick(event)
{
var nFrom;
var nTo;
nFrom = document.getElementById("txtFrom").value;
nTo = document.getElementById("txtTo").value;
document.getElementById("lblResult").innerText = generateRandom(nFrom, nTo);
}
但是当我分别使用2
和5
的{{1}}和From
属性测试网络应用时,我得到的数字如To
,{ {1}},22
,210
和20
。那么我如何纠正这一点,以便在没有成功的情况下生成27
和211
之间的数字?
答案 0 :(得分:3)
问题是你必须明确地将字符串值转换为数字:
function generateRandom(rFrom, rTo)
{
var num;
rFrom = Number(rFrom); rTo = Number(rTo);
num = Math.floor(rFrom + (1 + rTo - rFrom) * Math.random());
return num;
}
乘法将对“rTo”隐式执行,但是你必须为“rFrom”添加一个数字,否则它将被解释为字符串连接。
编辑 - oops我开始使用错误的代码块。这现在有你的原始功能,我改变的只是将参数显式转换为数字。
答案 1 :(得分:2)
function generateRandom(rFrom, rTo) { var num; num = Math.floor(Math.random()*parseInt(rTo)) + parseInt(rFrom); return num; }