zoukankan      html  css  js  c++  java
  • 计算双色球的中奖概率

     1 /**
     2  * ClassName: LotteryQuestion 
     3  * @Description: TODO
     4  *  @category 听到有人忽悠说双色球二等奖比三等奖好中,还说打电话去福彩中心,人说"Yes!"
     5 * 很愤慨 这国家到处都是忽悠只缘于你们高中数学真的不及格
     6 *
     7 * 例如 我们国家福彩中心规则玩法 : 33个红球里选6,16个蓝球里选1
     8 * 忽悠: " 2等奖几率大于3等奖 "
     9 *
    10 * 事实上这里有一个陷阱
    11 *
    12 * 二等奖的算法 应该是涵盖15个未摇中的篮球 因为不这样做就可能涵盖一等奖了
    13 * [c15(1)*(1/[start2generateBalls])]
    14 * 三等奖的算法应该是 6球选5球 再剩下的27球里选一个球 这样就不会涵盖二等奖
    15 * c6(5)*c27(1)*(1/[start2generateBalls])
    16  * @author Owen
    17  * @date 2015年12月22日
    18  */
    19 public class LotteryQuestion {
    20 private static int start2generateBalls() {
    21 return C(33, 6) * C(16, 1);// 双色球33选6 16选1
    22 }
    23 static int C(int k, int n) {
    24 int rs = 1;
    25 for (int i = 1; i <= n; i++)
    26 rs = rs * (k - i + 1) / i;
    27 return rs;
    28 }
    29 static int Bingo(int type) {
    30 int fenmu;
    31 switch (type) {
    32 case 1:
    33 fenmu = 1; // 6+1 1/c33(6)*c16(1)
    34 break;
    35 case 2:
    36 fenmu = 15; // 6+0 c15(1)/c33(6)*c16(1)
    37 break;
    38 case 3:
    39 fenmu = 6 * 27; // 5+1 c6(5)*c27(1)/c33(6)*c16(1)
    40 break;
    41 case 4:
    42 fenmu = C(6, 5) * C(27, 1) * C(15, 1) + C(6, 4) * C(27, 2); // 5+0 &
    43 // 4+1
    44 // (c6(5)*c27(1)*c15(1)+c6(4)*c27(2))/c33(6)*c16(1)
    45 break;
    46 case 5:
    47 fenmu = C(6, 4) * C(27, 2) * C(15, 1) + C(6, 3) * C(27, 3); // 4+0 &
    48 // 3+1
    49 // (c6(4)*c27(2)*c15(1)+c6(3)*c27(3))/c33(6)*c16(1)
    50 break;
    51 case 6:
    52 fenmu = C(6, 2) * C(27, 4) + C(6, 1) * C(27, 5) + C(27, 6);
    53 break;
    54 default:
    55 fenmu = 0;
    56 break;
    57 }
    58 return start2generateBalls() / fenmu;
    59 }
    60 public static void main(String[] args) {
    61 System.out.println("[双色球一等奖中奖几率] -> [1/" + Bingo(1) + "]
    亲,500w!");
    62 System.out.println("[双色球二奖中奖几率] -> [2/" + Bingo(2) + "]
    亲,166w!");
    63 System.out.println("[双色球三等奖中奖几率]-> [1/" + Bingo(3) + "]
    亲,3000元");
    64 System.out.println("[双色球四等奖中奖几率]-> [1/" + Bingo(4) + "]
    亲,没中过");
    65 System.out.println("[双色球五等奖中奖几率]-> [1/" + Bingo(5) + "]
    亲,求安慰");
    66 System.out.println("[双色球末等奖中奖几率]-> [1/" + Bingo(6) + "]
    亲,月月都来一次!");
    67 }
    68 }
  • 相关阅读:
    Python--文件操作
    Python--数据类型整理
    u-boot之NAND启动与NOR启动的区别
    u-boot之make all执行过程分析
    编译过程和符号表重定位问题、静态和动态链接
    u-boot之make <board_name>_config执行过程分析
    u-boot之ARM920T的start.S分析
    在使用Myeclipse时,用Tomcat添加部署项目的时候报错,或启动tomcat报错
    关于JDK,tomcat,eclipse的配置
    我的博客
  • 原文地址:https://www.cnblogs.com/xujianbo/p/5066166.html
Copyright © 2011-2022 走看看