分配计数时建立平均值

Establishing an average when counts are portioned

问题

我有一个数组,它是 class 道路的 属性,它定义了道路上允许的车辆类型,并提供了每种类型对交通的贡献的近似部分:

[[bus,.2],[smallCar,.6],[bigCar,.2]]

我需要计算道路上遇到的汽车的平均长度,给定交通比例。 (这需要在 class 的其他地方进行一些基本计算。)

我试过的:

我想不出更好的方法来做到这一点。在我的解决方案中,保真度随着汽车数量的增加而变化。这似乎是一种非常缓慢、笨拙的方法,而且是不正确的。要改进的函数名为 averageVehicleLaneSpace。

一个非常配对但工作的版本更大 classes:

road = function(){};
road.prototype.averageVehicleLaneSpace = function(){
    var sum = 0;
    var fakeCarCount = 10000;
    for( var i = 0; i< this.allowedVehicleTypes.length; i++){
        var type = this.allowedVehicleTypes[i][0];
        var perc = this.allowedVehicleTypes[i][1];
        for(n = 0; n<=fakeCarCount*perc; n++){
            sum += vehicle[type].laneSpace;
        }
    }
    return sum/fakeCarCount;
}


//define vehicles
var vehicle = {
    bus:{
        laneSpace:14
    },
    smallCar:{
        laneSpace:4
    },
    bigCar:{
        laneSpace:4.5
    }
};

var t = new road();
t.allowedVehicleTypes = [["bus",.1],["smallCar",.3],["bigCar",.6]];
alert(t.averageVehicleLaneSpace());

Fiddle:

这个Fiddle就是上面那个充满希望的例子:The fiddle.

平均值是每种车型 ratio * laneSpace 的总和。所以计算平均值很简单:

road.prototype.averageVehicleLaneSpace = function(){
    var avg = 0;
    for (var i = 0; i < this.allowedVehicleTypes.length; i++) {
        var type = this.allowedVehicleTypes[i][0];
        var perc = this.allowedVehicleTypes[i][1];
        avg += perc * vehicle[type].laneSpace;
    }
    return avg;
}