简体   繁体   English

中奖概率

[英]Winning lottery odds

I have another question about lottery.我还有一个关于彩票的问题。 I have to make this problem: "You want to participate in the game of chance 6 out of 49 with only one variant and you want to know what chances you will win:category I (6 numbers),category II (5 numbers),category III (4 numbers). Write a application that receive as input data the total number of balls, the number of balls drawn and then prints the chances of winning with an accuracy of 10 decimals if played with a single variant".我必须提出这个问题:“您想以一种变体参加 49 次机会中的 6 次游戏,并且您想知道您将赢得什么机会:I 类(6 个数字),II 类(5 个数字),类别 III(4 个数字)。编写一个应用程序,接收球总数、抽出的球数作为输入数据,然后在使用单一变体时以小数点后 10 位的精度打印获胜机会”。 My question is: What is the formula to calculate this?I try to find that formula but i didn't find it.我的问题是:计算这个的公式是什么?我试图找到那个公式,但我没有找到。 An example will be 40, 5 and II (5 numbers) and the result is 0.0002659542 or 45, 15 and category III is 0.0000001324.I need to mention i am a beginner.一个例子是 40、5 和 II(5 个数字),结果是 0.0002659542 或 45、15,类别 III 是 0.0000001324。我需要提一下我是初学者。 My code is working but just for 6 from 49.我的代码有效,但仅适用于 49 中的 6。

static void Main(string[] args)
    {
        int n = Convert.ToInt32(Console.ReadLine());
        int k = Convert.ToInt32(Console.ReadLine());
        string extract = Console.ReadLine();
        int category1 = category(extract);
        switch (category1)
        {
            case 6:
                calculateTheOddsToWin(n, k, extract);
                break;
            case 5:
                calculateTheOddsToWin(n, k, extract);
                break;
            case 4:
                calculateTheOddsToWin(n, k, extract);
                break;
        }

    }
        static void calculateTheOddsToWin(int n , int k , string extract)
    {
        double comb = combination(n, k);
        decimal solution =(decimal)( 1 / comb);
        decimal round = Math.Round(solution,10);
        Console.WriteLine(round);
    }
        static double combination(int n, int k)
        {
            double factN = factorialN(n);
            double factK = factorialK(k);
            double factNK = substractFactorialNK(n, k);
            double combination = factN / (factNK * factK);
            return combination;
        }

        static double factorialN(int n)
        {
            double factorialN = 1;
            for(int i = 1; i <= n; i++)
            {
                factorialN *= i;
            }
            return factorialN;
        }
        static double factorialK( int k)
        {
            double factorialK = 1;
            for (int i = 1; i <= k; i++)
            {
                factorialK *= i;
            }
            return factorialK;
        }
        static double substractFactorialNK(int n, int k)
        {
            double factorialNK = 1;
            int substract = n - k;
            for (int i = 1; i <= substract; i++)
            {
                factorialNK *= i;
            }
            return factorialNK;
        }
        static int category(string extract)
        {
           if(extract == "I")
            {
                return 6;
            }else if(extract == "II")
            {
                return 5;
            }else if(extract == "III")
            {
                return 4;
            }
            else
            {
                return -1;
            }
        }

You need to calculate three numbers:您需要计算三个数字:

T: The total number of combinations
W: The number of ways to draw the desired amount of winning numbers
L: The number of ways to draw the desired amount of losing numbers
Then, the answer is W * L / T

Example: 40 numbers, 5 draws, 4 correct:示例:40 个号码,5 次平局,4 次正确:

W = choose(5,4) = 5 (4 winners from 5 possibilities)
L = choose(35,1) = 35 (1 loser from 35 possibilities)
T = choose(40, 5) = 658008 (5 numbers from 40 possibilities)

5 * 35 / 658008 = 0.00265954

Generically:一般:

n = count of numbers
d = count of available winning numbers = draw size
k = count of winning numbers drawn (d, d-1, and d-2 for I, II, III).
W = choose(d, k) (k winners from d possibilities)
L = choose(n-d, d-k) (d-k losers from n-d possibilities)
T = choose(n, d) (d numbers from n possibilities)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM