2016-07-31 102 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)))); 
    } 
} 

我还没有测试过代码。