计算彩票赔率-关于代码的问题



我正在分析以下关于彩票赔率的代码,我有2个问题:

  • 为什么我们需要首先将lotteryOdds的值设置为1(另外,这是这种类型计算中的常见情况吗?)

  • 我知道计算概率的公式(n*(n-1)…(n-k+1)/(1*2…*k),但如果有人向我解释它是如何工作的,按照重复"for";循环,我很感激。

    import java.util.Scanner;
    public class LotteryOdds {
    
    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println(" How many numbers do you need to draw? ");
    int k = in.nextInt();
    System.out.println(" what is the highest numbers you can do draw? ");
    int n = in.nextInt();
    int lotteryOdds = 1;
    for (int i = 1; i <= k; i++) {
    lotteryOdds = lotteryOdds * (n - i + 1) / i;
    System.out.println("Your odds are 1 in " + lotteryOdds + " . Good luck!");
    }
    }
    

    }

lotteryOdds变量需要为1,因为如果您执行0 *某项操作,您将始终获得0,因此程序将始终返回0。至于循环,让我们改变值并通过循环:第一次迭代:

lotteryOdds = 1 * (n - 1 + 1)/1 = n/1

第二个迭代:

lotteryOdds = n * ((n - 2 + 1)/2) = (n/1) * ((n - 1)/2) = n *((n - 1)/2) = (n * (n - 1))/(1 * 2)

等。所以当你概括它的时候,你会得到(n * (n - 1)…(n - k + 1)/(1 * 2…* k)就像上面的公式一样

最新更新