1

n番目の数のベンフォードの法則を見つける方法を理解するアプリケーションを作成しようとしていますが、これまでのところそれを行うことができませんでした。最初の位置の番号で見つけることができますが、その後はわかりません。ベンフォード法に関するリソースは次のとおりです。

http://www.mathpages.com/home/kmath302/kmath302.htm

一番下(最後の式)に私がやろうとしていることの数式がありますが、それをコードに取り入れることができないようです。

これは私が任意の位置で最初の桁に対してそれをした方法です:

public static double probability(int position, int digit)
{   
    double result = Math.log(1+(1/(double) digit))/Math.log(10);
    return result;
}

その合計部分を実装する方法について何かアイデアはありますか?forループが含まれることは間違いありませんが、試してみるとうまくいかないようです。

編集 - - - - - - - - - - - - - - - - - - - - - - - - - ---------------------------------------

tskuzzyの答えのおかげで私はそれを理解しました。これは、Javaでそれを行う方法です。

public static double probability(int position, int digit) {   
double p = 0.0;

for( int k = (int) Math.pow(10,position-1); k < Math.pow(10,position); k++)
{
    p += Math.log( 1+1.0/(k*10 + digit) );
}

return p/Math.log(10);
}
4

1 に答える 1

2

ええ、それは単なるforループです:

public static double probability(int position, int digit) {   
    double p = 0.0;

    for( int k = Math.pow(10,position-1); k < Math.pow(10,position); k++ {
        p += Math.log( 1+1.0/(k*10 + digit) );
    }

    return p/Math.log(10);
}
于 2011-10-20T19:35:51.220 に答える