爪哇的本福德定律

时间:2011-10-20 19:32:53

标签: java math benfords-law

我正在尝试创建一个应用程序,它将弄清楚如何在第n个位置找到benfords法则,到目前为止我还没能做到。我可以在第一个位置找到它的数字但我不确定那之后。这是benfords法律的资源:

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循环但是当我尝试它时似乎没有用。

EDIT ---------------------------------------------- ------------------------------------------

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

1 个答案:

答案 0 :(得分: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);
}