0

あなたのサポートでこの問題を解決したい。$ar という名前の変数に配列があり、この配列に 5 つの数値が存在すると仮定すると、Pascal または PHP プログラミング言語を使用してこれらの数値の幾何平均を計算したいと考えています。どのようにできるのか ?

4

3 に答える 3

1

PHPバージョンは次のとおりです。

function geometric_average($a) {  
   foreach($a as $i=>$n) $mul = $i == 0 ? $n : $mul*$n;  
   return pow($mul,1/count($a));  
}

//usage
echo geometric_average(array(2,8)); //Output-> 4
于 2012-05-19T16:05:43.803 に答える
1

「標準」で可能な解決策Pascal:

program GeometricAvarage;

const SIZE = 5;

function GeoAvg(A:array of real):real;
var
  avg: real;
  i: integer;

begin
avg := 1;
for i:=0 to (SIZE) do
  avg := avg * A[i];
avg :=Exp(1/SIZE*Ln(avg));
Result:=avg;
end;

begin

var
ar: array [1..SIZE] of real :=(1,2,3,4,5);

writeln('Geometric Avarage = ', GeoAvg(ar)); {Output should be =~2.605}
readln;
end.

動的配列を使用する場合は、たとえば、Delphiまたはで行う必要があります。ObjectPascal

于 2012-05-25T09:29:26.280 に答える
0

PHPの回答へのコメントで述べたように、これに問題があった人にとって、その回答はすべての人に適しているとは限りません。特に、PHPとして多数または多数の数値の幾何平均/平均を見つけようとしている人単に保存しません。

非常に簡単な解決策は、最初の配列をチャンクに分割し、平均を計算してから乗算することです。

function geometricMean(array $array)
{
    if (!count($array)) {
        return 0;
    }

    $total = count($array);
    $power = 1 / $total;

    $chunkProducts = array();
    $chunks = array_chunk($array, 10);

    foreach ($chunks as $chunk) {
        $chunkProducts[] = pow(array_product($chunk), $power);
    }

    $result = array_product($chunkProducts);
    return $result;
}

注意してください10-これはチャンク内の要素の数です。必要に応じて変更できます。結果として得られる場合はINF、それを下げてみてください。

于 2015-10-14T12:16:09.543 に答える