2016-07-31 52 views
0

我有一個數學公式,並且很難理解這個並轉換爲Java代碼。難以理解一個數學公式

[附加的圖像是式I必須解決]我已經寫一些代碼

enter image description here

,它是沒有幫助多。在公式我有C和P值,並需要找到N.

下面是我的代碼已經使用

public static Double sigmaSum(int c, int n, Double p){ 
    Double sum = 0.00; 
    for(int i=0; i<c; i++){ 
    for(int j=i; j<n;j++){ 
    sum += ((Math.pow(p, j)) * (Math.pow((1-p), (n-j)))); 
    } 

我有一個相應的Excel公式,但我不知道如何將它轉換到java中。

Option Explicit 
Dim intLTPD, intCL, intC, intCalcF, intK, intComboNum, intComboDen1, intI, intJ, intComboDen2, intCombo, intL As Integer 
Dim lngSampleSize As Long 

Sub macBinSampPlan() 
' 
intLTPD = (Range("B1")/100) 
intCL = Range("B2")/100 
'intC = Int(Range("B3")) 
Cells.Range("A6").Select 

intCombo = 0 
intCalcF = 0 
intI = 0 
intJ = 0 

For intC = 0 To 10 
    For intI = 1 To 10000 
     For intJ = 0 To intC 
      If intI >= intJ Then 
       intCombo = Application.WorksheetFunction.Combin(intI, intJ) 
       intCalcF = intCalcF + (intCombo * (Application.WorksheetFunction.Power(intLTPD, intJ)) * (Application.WorksheetFunction.Power((1 - intLTPD), (intI - intJ)))) 
      Else 
       Exit For 
      End If 
     Next intJ 
     If (intCalcF - (1 - intCL))/intCalcF <= intLTPD Then 
      lngSampleSize = intI 
      Exit For 
     Else 
      intCombo = 0 
      intCalcF = 0 
     End If 
    Next intI 
    ActiveCell = intC 
    ActiveCell.Offset(0, 1).Range("A1").Select 
    ActiveCell = lngSampleSize + 1 
    ActiveCell.Offset(1, -1).Range("A1").Select 
Next intC 

End Sub 

我工作的這一個星期左右,並沒有能夠得到它resolved.It應該是,如果一些機構可以解決這個有很大的幫助。提前致謝。

Vivek

+0

目前尚不清楚你想要什麼。您的Java模塊代碼採用'c', 'n'和'p',但不返回任何內容。用你的Excel VBA代碼,完全不清楚不同的變量應該是什麼。也許'intJ'應該是'i',所以'intC'應該是'c'(10)。 'intI'是從1到10000循環的'n',但是爲什麼? 'intLTPD'('B1')可能是'p'。那麼爲什麼不根據公式以有意義的方式來命名變量?什麼是'intCL'('B2'),它與給定公式的結果'intCalcF'有什麼關係? VBA代碼寫了10行結果。 java代碼究竟做什麼? –

+0

所以如果你想得到答案,請編輯你的問題,並提供更多的信息。順便說一句:在你的公式中,'n選擇i'是[二項式係數](https://en.wikipedia.org/wiki/Binomial_coefficient)。這是Excel的[COMBIN](https://support.office.com/en-us/article/COMBIN-function-12a3f276-0a21-423a-8de6-06990aaf638a)計算的結果。 –

+0

Btw .: [BINOM.DIST](https://support.office.com/zh-cn/article/BINOM-DIST-function-c5ae37b6-f39c-4be2-94c2-509a1480770c) - [Java](http:///lacinato.com/cm/software/othersoft/binomdist) –

回答

0

你實現你的二項式的方式似乎是錯誤的。根據你的公式,代碼應該是:

public static Double sigmaSum(int c, int n, Double p){ 
    Double sum = 0.00; 
    for(int i=0; i<c; i++){ 
    sum += ((CombinatoricsUtils.binomialCoefficientDouble(n,i)) * (Math.pow(p, i)) * (Math.pow((1-p), (n-i)))); 
    } 
} 

我還沒有測試過代碼。