1. 问题描述

双色球中,红色球选号规则:红色球可以在1-33个编号中任意选择6个。

问题:红色球全部选中的概率为多少?

2. 代码:

package v1ch03.BigIntegerTest;import java.math.*;
import java.util.*;/*** This program uses big numbers to compute the odds of winning the grand prize in a lottery.* @version 1.20 2004-02-10* @author Cay Horstmann*/
public class BigIntegerTest
{public static void main(String[] args){Scanner in = new Scanner(System.in);System.out.print("How many numbers do you need to draw? ");int k = in.nextInt();System.out.print("What is the highest number you can draw? ");int n = in.nextInt();/** compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)*/BigInteger lotteryOdds = BigInteger.valueOf(1);for (int i = 1; i <= k; i++)lotteryOdds = lotteryOdds.multiply(BigInteger.valueOf(n - i + 1)).divide(BigInteger.valueOf(i));System.out.println("Your odds are 1 in " + lotteryOdds + ". Good luck!");}
}

运行结果:

How many numbers do you need to draw? 6
What is the highest number you can draw? 33
Your odds are 1 in 1107568. Good luck!

即,红色球全部选中的概率为:1107568分之一(约111万分之一)。

另外,本程序也可以演示BigInterger类的强大之处,如下所示:

How many numbers do you need to draw? 500
What is the highest number you can draw? 5000
Your odds are 1 in 152383570502276241773112299038287011759805517717774989612063963324852197721349960590884233711082048864016759544054508257767390473359453022881045964121514812790325726285875069528156914452728158646183348385785484897051302963702456469661925649013938025675652103406710218905355077057732196294852278472953496440392540565238652496586095257231832780763525058654245376714838913660805861811146730935555609878975704618923988507281746376470494321008996284739018893410735106722857930028973378877130054931747509530956061693359470175950233574962808714004842287921921934995121777448532875190191549476629085646880295182806621692835943142454947817131669088583382928050125741393952210717943794438066831202814961683139272640. Good luck!

若在Excel中使用Combin()函数来计算,Combin(5000,500),将会发现溢出错误(#NUM)。而本程序的计算结果为705位数之多。至于最高支持多少位的计算,暂不深究,够用就行。

Java源码——使用BigInteger计算组合数(彩票中奖概率计算示例)相关推荐

  1. 彩票中奖概率计算过程

    周六周末无聊,想着买彩票,万一中奖了就不用上班啦,哈哈.所以就计算了一下中奖概率. 中奖规则: 一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖: 二等奖:投注号码与当期开奖号码中的6 ...

  2. 比较精确的计算农历节气的java源码

    在网上找了好多计算农历节气的java源码,有好多都有误差,另外靠存储查找的方法终究不靠谱. 最近在"绿色冰点"的博客上看到了关于"寿星万年历---java算法实现&quo ...

  3. JAVA源码优化、分析工具

    JAVA源码优化.分析工具 一.11款用于优化.分析源代码的Java工具 1. PMD from http://pmd.sourceforge.net/ PMD能够扫描Java 源代码,查找类似以下的 ...

  4. 面试官系统精讲Java源码及大厂真题 - 30 AbstractQueuedSynchronizer 源码解析(上)

    30 AbstractQueuedSynchronizer 源码解析(上) 不想当将军的士兵,不是好士兵. 引导语 AbstractQueuedSynchronizer 中文翻译叫做同步器,简称 AQ ...

  5. 面试官系统精讲Java源码及大厂真题 - 07 List 源码会问哪些面试题

    07 List 源码会问哪些面试题 勤学如春起之苗,不见其增,日有所长. --陶潜 引导语 List 作为工作中最常见的集合类型,在面试过程中,也是经常会被问到各种各样的面试题,一般来说,只要你看过源 ...

  6. java hashset 实现_HashSet实现原理分析(Java源码剖析)

    本文将深入讨论HashSet实现原理的源码细节.在分析源码之前,首先我们需要对HashSet有一个基本的理解. HashSet只存储不同的值,set中是不会出现重复值的. HashSet和HashMa ...

  7. 面试官:背了几道面试题就敢说熟悉Java源码?我们不招连源码都不会看的人|原力计划...

    作者|Baldwin_KeepMind 责编|伍杏玲 出品|CSDN博客 我的真实经历 标题是我2019.6.28在深圳某500强公司面试时候面试官跟我说的话,即使是现在想起来,也是觉得无尽的羞愧,因 ...

  8. 华为OD机试(21-40)老题库解析Java源码系列连载ing

    华为OD机试算法题新老题库练习及源码 老题库 21.字符串序列判定 22.最长的指定瑕疵度的元音子串 23.处理器问题 24.单向链表中间节点 25.字符串重新排列.字符串重新排序 26.完美走位 2 ...

  9. 转载:深入学习java源码之Callable.call()与Future.get()

    原始链接:https://blog.csdn.net/qq_35029061/article/details/86750369 深入学习java源码之Callable.call()与Future.ge ...

最新文章

  1. C# 实现对接电信交费易自动缴费 续(winio/winring0 自动填密码)
  2. Sticker.js生成图片或者页面元素“速干贴”效果
  3. Ubuntu之GCC:GCC编译器的简介、安装、使用方法之详细攻略
  4. JPA(二):HellWord工程
  5. CMMI for Development读书笔记-目录
  6. vb excel遍历列_EXCEL如何把多个表格合并成一个表格
  7. python捕获摄像头帧_Xuggler教程:帧捕获和视频创建
  8. spring-security-学习笔记-02-基于Session的认证方式
  9. 能力清单:2020年SAAS的思考框架
  10. docker之阿里云centos 7.x 启动容器报错处理办法
  11. shader 隐身_如何超越隐身障碍
  12. css自动换行加前置_StudyNode -- CSS
  13. Memory Management in AIR / AS3 / Flash Garbage Collection.
  14. linux串口链接扫码枪,串口扫描枪怎样使用?
  15. 见过这么有才的笑话吗?
  16. URAL1325-Dirt
  17. Assets, Objects and serialization Assets, Objects与序列化 最佳实践系列3
  18. win7设置ipsec_解决win7连接IPsec报错789和809错误
  19. ubuntu 下的pdfcrop功能不(pdf剪切)
  20. 服务器的备份文件在哪里找,云服务器系统如何备份文件在哪里看

热门文章

  1. 【Java语言基础】1.3 Java补充知识
  2. 一键关闭defender
  3. Maven学习文档常用命令继承聚合
  4. 科技爱好者周刊(第 173 期):网络收音机的设计
  5. 世界杯太精彩了,带大家用Python做个足球游戏,边玩游戏边看比赛
  6. ppt模板 免费下载
  7. 国际快递货物可以分为哪几类
  8. DataVisor大数据独创算法,实现真正智能的反欺诈预警
  9. 使用PC Access实现WinCC v7.4和S7-200 PLC之间的通信
  10. 名帖03 李阳冰 篆书《谦卦碑》