当前位置: 首页 > news >正文

5 for循环——抽奖概率计算器

一、代码演示        

        这个案例是一个小型的抽奖概率计算器,帮你估算在一个抽奖游戏中中奖的概率。程序根据你设置的号码数量和抽取次数,计算出中奖的几率。是不是感觉有点像买彩票的感觉呢?      

import java.util.Scanner;public class LotteryOdds3_5 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("抽奖游戏开始了!你可以抽几次?");int k = scanner.nextInt(); // 用户输入需要抽取的次数(k)System.out.println("你想设置多少个号码?");int n = scanner.nextInt(); // 用户输入总的号码个数(n)// 初始化中奖赔率int lotteryOdds = 1;// 使用for循环计算组合数 C(n, k)for (int i = 1; i <= k; i++) {// 公式: C(n, k) = n! / (k! * (n - k)!)// 可以逐步简化为: C(n, k) = n * (n-1) * ... * (n-k+1) / (k * (k-1) * ... * 1)lotteryOdds = lotteryOdds * (n - i + 1) / i;// 输出当前计算出的赔率System.out.println("你的中奖赔率是1/" + lotteryOdds + "。祝你好运!");}}
}

 

二、运行效果

抽奖游戏开始了!你可以抽几次?
(你输入)3
你想设置多少个号码?
(你输入)10
你的中奖赔率是 1/10。祝你好运!
你的中奖赔率是 1/45。祝你好运!
你的中奖赔率是 1/120。祝你好运!

三、代码解释

1.用户输入

        用户需要输入两个数字:

                k:你可以抽取的次数(例如你从一堆号码中抽 3 个)。

                n:设置的号码总数量(例如你从 10 个号码中抽奖)。

2.中奖概率计算

        公式:lotteryOdds = lotteryOdds * (n - i + 1) / i

公式解释:这是一个经典的组合数学公式,计算从 n 个号码中抽取 k 个号码的组合数。

        例如,抽取 3 次,从 10 个号码中抽取:

  •         第一次计算:lotteryOdds = 1 * (10 - 1 + 1) / 1 = 10
  •         第二次计算:lotteryOdds = 10 * (10 - 2 + 1) / 2 = 45
  •         第三次计算:lotteryOdds = 45 * (10 - 3 + 1) / 3 = 120

        最终输出的 1/120 就是中奖的概率。

3.for 循环

这个循环从 1 到 k(抽取次数)执行,逐步计算中奖赔率,并在每一步输出当前的概率。

四、思考

  • 整数除法:在计算过程中,(n - i + 1) / i 使用的是整数除法,如果 i(n - i + 1) 大,结果会自动取整,不会出现浮点数。
  • 输入校验:程序没有处理非法输入(例如 k 大于 n 或输入负数),可以在后续版本中进行改进。

五、总结

        这个简单的抽奖概率计算器使用了 for 循环 和基本的组合数学公式,帮助你理解在抽奖游戏中,如何通过计算获知中奖的概率。你学到了如何使用循环结构进行数学计算,并且用生动的例子演示了程序如何实时输出结果。

        是不是有种买彩票时算中奖几率的感觉呢?快去试试,看看在不同设置下,你的中奖概率会有多高!希望你下次抽奖能中大奖,祝你好运!


        欢迎来到《Java 核心技术之风趣解读》专栏!

        朋友们你们好,我是Theodore,这个专栏将会带你以轻松有趣的方式学习《Java 核心技术》这本书中的各种经典案例。每篇文章都会将枯燥的代码变得生动形象,穿插一些编程小故事、段子和贴心的解释,让你在欢乐中掌握 Java 编程的精髓。

        不论你是刚接触 Java 的小白,还是希望巩固基础的老手,在这里你都会收获到干货和乐趣。希望你们能够在每篇文章中,不仅学到知识,还能收获一份编程的快乐。

免责声明

本专栏中的所有案例代码和讲解均来源于《Java 核心技术》一书,并经过幽默化加工,仅用于学习和分享,旨在帮助大家更好地理解 Java 编程。

  1. 非商业用途:所有内容仅供学习和参考,未经允许不得用于商业用途。
  2. 代码解释:由于风趣讲解涉及到一些轻松幽默的比喻,可能会夸张化或调侃部分编程术语,请以实际代码为准。
  3. 风险提示:编程是一项严谨的工作,请勿轻易在生产环境中直接使用未经测试的代码。博主会尽力确保代码的正确性,但不对因使用本专栏代码引起的任何问题负责。
  4. 版权声明:本专栏内容部分引用《Java 核心技术》的案例,相关版权归原书作者所有。本专栏的幽默化讲解和额外内容为原创部分,转载请注明出处。

        最后,希望大家在学习的过程中开开心心,不断进步!有任何问题,欢迎在评论区留言讨论。让我们一起在 Java 世界里畅游吧!

 


http://www.mrgr.cn/news/74901.html

相关文章:

  • 泷羽sec学习打卡-Linux基础
  • 320页PDF | 集团IT蓝图总体规划报告-德勤(限免下载)
  • CSS多列布局:打破传统布局的束缚
  • Mybatis-plus学习
  • 深入解析 CentOS 7 上 MySQL 8.0 的最佳实践20241112
  • leetcode 148. 排序链表 中等
  • Puppeteer教程:使用CSS选择器点击和爬取动态数据
  • Apache Paimon、Apache Hudi、Apache Iceberg对比分析
  • 最懂AI算法的软件,MATLAB实战深度学习大模型带给我不少惊喜!
  • JacksonObjectMapper的作用
  • 【深度学习】神经网络优化方法 正则化方法 价格分类案例
  • Android Studio 中三方库依赖无法找到的解决方案
  • 后台管理系统的通用权限解决方案(十五)基于注解和切面实现操作日志记录
  • 【Linux】 shell 学习汇总[转载]
  • Spark读MySQL数据rdd分区数受什么影响,读parquet、hdfs、hive、Doris、Kafka呢?
  • 接口自动化环境搭建
  • 连接数据库导出数据库信息支持excel pdf html markdown
  • 03 P1314 [NOIP2011 提高组] 聪明的质监员
  • 群控系统服务端开发模式-应用开发-前端角色功能开发
  • AI界盛会来袭!高录用EI会议(IS-AII 2025)你绝不能错过!
  • 【B+树特点】
  • Aippyy如何写论文?ai人工智能写作哪家好?
  • java项目-jenkins任务的创建和执行
  • DasViewer可以批量加载osgb格式文件吗?
  • C++初阶:类和对象(上)
  • Fiddler安装配置+抓包手机