2011-10-20 67 views
1

我想創建一個應用程序,將弄清楚如何找到第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循環,但是當我嘗試它時似乎並不奏效。

編輯--------------------------------------------- -------------------------------------------

感謝tskuzzy's答案我找到了答案。這是你會怎麼做它在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); 
} 

回答

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

那是一個偉大的想法,但你不能使用雙在for循環和如果你將k作爲一個整數,它不會以數學方式工作,因此不會返回正確的答案... – Rmyers

+0

等待我嘗試了錯誤的方式......這實際上是正確的答案。謝謝! – Rmyers