Javascript 在一定时间内对一定数量进行随机相加

Javascript 在一定时间内对一定数量进行随机相加,javascript,jquery,Javascript,Jquery,我需要在JavaScript/jQuery中的一些工作方面的帮助 我想给它一个设定的“目的地”编号,给它一个设定的持续时间,并让它在整个持续时间内以1的间隔随机相加(不是等距,但不是在开始、结束或中间),但在持续时间内达到“目的地”编号就到了 因此,如果我将持续时间设置为20秒,“目的地”数设置为10。它将启动计时器,并随机添加1的间隔(不遵循任何模式),持续时间与添加最后一个数字的时间相同 我真的被这件事缠住了,甚至不知道从哪里开始 任何帮助都将不胜感激,非常感谢 我的方法是: 将持续时间分成

我需要在JavaScript/jQuery中的一些工作方面的帮助

我想给它一个设定的“目的地”编号,给它一个设定的持续时间,并让它在整个持续时间内以1的间隔随机相加(不是等距,但不是在开始、结束或中间),但在持续时间内达到“目的地”编号就到了

因此,如果我将持续时间设置为20秒,“目的地”数设置为10。它将启动计时器,并随机添加1的间隔(不遵循任何模式),持续时间与添加最后一个数字的时间相同

我真的被这件事缠住了,甚至不知道从哪里开始

任何帮助都将不胜感激,非常感谢

我的方法是:

  • 将持续时间分成相等的部分(每个增量一个,从0开始,以整个持续时间结束)
  • 将延迟随机化,但保持相同的总和。如果向一个延迟添加一些随机值,则从延迟间隔中减去相同的值
  • 调用
    window.setTimeout
    ,设置所有延迟。给它一个函数,使当前值增加1
  • 守则:

    var start = parseInt($("#inStart").val(), 10),
        end = parseInt($("#inEnd").val(), 10),
        duration = parseInt($("#inDuration").val(), 10),
        difference = end - start,
        current = start - 1,
        step = duration * 1000 / difference,
        delays = [],
        index, amount, 
        increment = function () {
            current += 1;
            $("#outCurrent").text(current);
        };
    // calculate equal delays
    for (index = 0; index <= difference; index++) {
        delays.push(step * index);
    }
    // randomize delays, without changing the sum 
    for (index = 1; index < delays.length - 2; index++) {
        amount = (Math.random() - 0.5) * step;
        delays[index] -= amount;
        delays[index+1] += amount;
    }
    // schedule the increment calls
    for (index = 0; index < delays.length; index++) {
        window.setTimeout(increment, delays[index]);
    }
    
    var start=parseInt($(“#inStart”).val(),10),
    end=parseInt($(“#inEnd”).val(),10),
    持续时间=parseInt($(“#硬化”).val(),10),
    差异=结束-开始,
    电流=启动-1,
    步长=持续时间*1000/差,
    延迟=[],
    指数,数量,,
    增量=函数(){
    电流+=1;
    $(“#流出”)。文本(当前);
    };
    //计算相等的延迟
    
    对于(index=0;显示一些代码的索引会有所帮助。一些响应会很好。