试图生成随机数时的问题

时间:2011-04-14 17:24:14

标签: javascript web-applications random

我正在尝试使用以下代码构建一个在一个范围内(从/到)生成随机数的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);
}

但是当我分别使用25的{​​{1}}和From属性测试网络应用时,我得到的数字如To,{ {1}},2221020。那么我如何纠正这一点,以便在没有成功的情况下生成27211之间的数字?

2 个答案:

答案 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;
}