我正在尝试创建一个应用程序,该应用程序将找出如何在第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);
}

最佳答案

是的,这只是一个循环:

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

09-30 23:23