在计算分数时建立平均值

时间:2015-03-26 23:35:06

标签: javascript math

问题

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

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

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

我尝试了什么:

我无法完全理解这种做法。在我的解决方案中,保真度随着车数的增加而变化。这似乎是一个非常缓慢,严厉的方法而且不对。要改进的功能名为averageVehicleLaneSpace。

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

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());

小提琴:

这个小提琴是上面有希望的例子:The fiddle

1 个答案:

答案 0 :(得分:1)

平均值是每种车型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;
}