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

【高中数学/古典概率】4红2黑六选二,求取出两次都是红球的概率

【问题】

袋子里装4只红球,2只黑球,大小完全相同,抽两次球,每次抽一只,抽出后不再放回,求取出的两次都是红球的概率。

【来源】

数林外传系列之《概率与期望》P20 单埻著 中国科学技术大学出版社

【数学解法】

解法一:首球为红球概率为4/6,次球为红球概率为3/5,总概率为4/6*3/5=2/5

解法二:总选法为六选二=C(6,2),选红球两次的选法=C(4,2),概率为P=C(4,2)/C(6,2)=2/5

评述:解法一好理解,解法二的C(4,2)有点从天而降的意思,不好理解和灵活运用。

【程序解法】

将数组{0,1,2,3,4,5}进行全排列,取出前两个序号到数组{1,1,1,1,0,0}取数求和,和为2的即为选两次红球的方案,最后统计。

【程序代码】

主类:

package test250424;import java.util.List;/*** */
public class Test250424 {public static void main(String[] args) {int[] nums= {1,1,1,1,0,0};int[] idxs= {0,1,2,3,4,5};Arranger arger = new Arranger(idxs,idxs.length);int sum=0;int total=0;for (List<Integer> line : arger.getResults()) {            int score=0;score+=nums[line.get(0)];score+=nums[line.get(1)];if(score==2) {sum++;}total++;}System.out.println("Two Red:"+sum+" Total:"+total+" Probability:"+sum*100/total+"%");}
}

辅助类Arranger:

package test250424;import java.util.ArrayList;
import java.util.List;/*** 用于产生排列结果的工具类* 从n个元素中取出m个元素,按照一定的顺序排成一列。得到所有排列的方案*/
class Arranger {// 保存在内部的对原始元素数组的引用private int[] arr;// 总计多少元素,此即数组长度private final int n;// 选多少个private final int m;// 返回结果private List<List<Integer>> results;/*** 构造函数一* 这个构造函数是用于全排列的(n=m=数组长度)** @arr 原始元素数组*/public Arranger(int[] arr) {this.arr = arr;this.n = arr.length;this.m = arr.length;this.results = new ArrayList<>();doArrange(new ArrayList<>());}/*** 构造函数二* 这个构造函数是用于部分排列的(m<n=数组长度)** @param arr    原始元素数组* @param selCnt 选多少个*/public Arranger(int[] arr, int selCnt) {this.arr = arr;this.n = arr.length;this.m = selCnt;if (m > n) {throw new ArrayIndexOutOfBoundsException("m:" + m + " >n:" + n);}this.results = new ArrayList<>();doArrange(new ArrayList<>());}/*** 使用递归进行全排列,结果放在results中** @param initialList 初始链表*/private void doArrange(List<Integer> initialList) {List<Integer> innerList = new ArrayList<>(initialList);if (m == initialList.size()) {results.add(innerList);}for (int i = 0; i < arr.length; i++) {if (innerList.contains(arr[i])) {continue;}innerList.add(arr[i]);doArrange(innerList);innerList.remove(innerList.size() - 1);}}/*** 获得结果链表的引用** @return*/public List<List<Integer>> getResults() {return results;}// 测试public static void main(String[] args) {int[] numbers = {1, 2, 3, 4};Arranger arranger = new Arranger(numbers);System.out.println("四元素全排列示例:");int idx = 0;for (List<Integer> re : arranger.getResults()) {System.out.println(String.format("%02d", ++idx) + "." + re);}/*Arranger arranger2 = new Arranger(numbers, 2);System.out.println("\n四选二排列示例:");idx = 0;for (List<Integer> re : arranger2.getResults()) {System.out.println(String.format("%02d", ++idx) + "." + re);}*/}
}

【程序输出】

Two Red:288 Total:720 Probability:40%

【结论】

三种方法可以相互印证。

END

http://www.xdnf.cn/news/116191.html

相关文章:

  • 【C++】内存管理:内存划分、动态内存管理(new、delete用法)
  • 跑MPS产生委外采购申请(成品)
  • 机器人结构认知与安装
  • Vue 3 相比 Vue 2 的优势
  • 深入详解人工智能数学基础——概率论中的贝叶斯深度学习
  • likeadmin前端请求地址配置踩坑
  • CentOS 7上安装与配置Memcached及PHP客户端使用教程
  • PCB 过孔铜厚的深入指南
  • QMT学习课程Day1
  • Web3钱包开发功能部署设计
  • 大语言模型时代,单细胞注释也需要集思广益(mLLMCelltype)
  • 论文笔记(七十九)STOMP: Stochastic Trajectory Optimization for Motion Planning
  • 【基础】Node.js 介绍、安装及npm 和 npx功能了解
  • MySQL 事务(详细版)
  • 【一览表】病理图像处理流程
  • leetcode 2799. 统计完全子数组的数目 中等
  • 立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
  • Vue实战(08)解决 Vue 项目中路径别名 `@` 在 IDE 中报错无法识别的问题
  • 如何调用大语言模型的API?
  • C#中实现JSON解析器
  • 精益数据分析(19/126):走出数据误区,拥抱创业愿景
  • 快速上手GO的net/http包,个人学习笔记
  • 深入理解MVP架构:让UI层与业务逻辑完美分离的设计模式
  • 学习ros过程中常用指令
  • 【数据可视化-30】Netflix电影和电视节目数据集可视化分析
  • vue3实现v-directive;vue3实现v-指令;v-directive不触发
  • 用 Python 实现基于 Open CASCADE 的 CAD 绘图工具
  • 深入浅出JavaScript常见设计模式:从原理到实战(1)
  • 【Hive入门】Hive查询语言(DQL)完全指南:从基础查询到高级分析
  • Redis学习