【问题标题】:Problems While Trying To Generate Random Numbers尝试生成随机数时的问题
【发布时间】:2011-04-14 17:24:14
【问题描述】:

我正在尝试使用以下代码构建一个 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 分别为FromTo 测试Web 应用程序时,我得到了像222102027 这样的数字和211。那么我该如何纠正这个问题,以便它生成介于 25 之间的数字,因为尝试没有成功?

【问题讨论】:

    标签: javascript web-applications random


    【解决方案1】:

    问题是你必须明确地将字符串值转换为数字:

    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”设为一个数字以进行加法,否则它将被解释为字符串连接。

    edit — 糟糕,我从错误的代码块开始。这现在有了你原来的功能,我所做的只是将参数显式转换为数字。

    【讨论】:

      【解决方案2】:
      函数生成随机(rFrom,rTo) { 变量编号; num = Math.floor(Math.random()*parseInt(rTo)) + parseInt(rFrom); 返回号码; }

      【讨论】:

      • 现在我得到了02(可以接受)、222342(不可以接受)这样的数字
      • 您的问题是使用字符串。你应该 parseInt(rFrom) 和 parseInt(rTo) 来解决这个问题。
      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2013-06-03
      • 2017-04-10
      • 2014-07-20
      • 2018-10-11
      相关资源
      最近更新 更多