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