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