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