6

この問題はnode.jsサーバーを念頭に置いて尋ねられていますが、クライアント側のスクリプトにも同じロジックを使用する可能性があるため、この質問を「javascript」と言いました。

問題は次のとおりです。x値のセットが与えられた場合、yは対数的にスケーリングする必要があります。Mathオブジェクトは自然対数[ ln(x)]を実行しますが、対数の基数を指定するためのインターフェイスを提供しません。

具体的な例として、次のものを見つける必要があります。

log[512](2)

.1111〜を返す必要があります

ただし、これを実行できるインターフェイスが表示されません。また、ログのベースのオプションを公開するライブラリが見つからないようです。確かにこれは一般的な問題であり、解決策がありますが、私の検索では、さまざまな/無関係の問題の解決策しか見つかりませんでした。アイデア?

4

2 に答える 2

16

対数ベース変更式を使用できます。

log[a](n) = log[b](n) / log[b](a)

したがって、log(2)基数512を取得するには、次を使用します。

function log(b, n) {
    return Math.log(n) / Math.log(b);
}

alert(log(2, 512));

Math.log上記は自然対数ベースを使用していることに注意してください。つまり、ln数学的に記述されます。

于 2011-12-13T16:19:23.170 に答える
5

私は今日グーグルで最初の結果としてこの答えを見つけました、そして誰かがそれを見つけたなら、小さな間違いがあります。正しいバージョンは次のとおりです。

function log(b, n) {  
    return Math.log(n) / Math.log(b);  
}
于 2012-12-10T10:46:17.623 に答える