0

たとえば、同じエントリ数を持つ 2 つの配列があります。

var one = [0,20,30,40] ;
var two = [43,20,10,50] ;

これら2つの配列の類似性をパーセンテージで見つける必要があります
。そのようなことを試しました:

var avg = (one[0]-two[0] + one[1]-two[1] + one[2]-two[2] + one[3]-two[3]) / 4 ;

しかし、結果は良くありません
。このような適切な平均を計算するにはどうすればよいですか?

編集: 2 つのサウンド データの類似性と考えてください。
つまり:

var one = [0,20,30,40] ;
var two = [0,40,60,80] ;

それらの平均は100%になります..

4

2 に答える 2

3

両方の配列を組み合わせた平均である数値が 1 つだけ必要な場合は、これを試してください。

var one = [0,20,30,40];
var two = [43,20,10,50];
var i, j;
var average = 0;

for(i = 0; i < one.length; i++){
    average += one[i];
}
for(j = 0; j < two.length; j++){ // (two arrays for flexibility.)
    average += two[j];
}
console.log(average /= (i+j));
// 26.625

特定のインデックスでの配列の平均が必要な場合は、これを試してください。

var one = [0,20,30,40];
var two = [43,20,10,50];
var i;
var average = [];

for(i = 0; i < one.length; i++){
    average.push((one[i] + two[i]) / 2);
}

console.log(average);
// [21.5, 20, 20, 45]

編集:

あなたの編集を見る限り、 に追加される平均パーセンテージが になりone、 が得られますtwo。これはうまくいくはずです:

var i, n = 0;
var average = 0;

var one = [0,20,30,40] ;
var two = [0,60,70,120] ;

for(i = 0; i < one.length; i++){
    if(one[i] != 0){
        average += two[i] / one[i];
        n++;
    }
}
average = (average / n - 1)*100;
于 2013-01-28T13:00:59.193 に答える
-2
var one = [0,20,30,40];
var two = [43,20,10,50];
var temp=one.concat(two)
var sum=0 , average=0;
for (i=0; i<temp.length;i++){
sum+=temp[i];
} 
avg=sum/i
document.write(sum);
document.write("<br>");
document.write(avg);

これは簡単なコードです。これがあなたの求めるものかどうか教えてください。

于 2013-01-28T13:29:31.350 に答える