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

python 实现 AIGC 大模型中的概率论:生日问题的基本推导

在上一节中,我们对生日问题进行了严谨的阐述:假设屋子里面每个人的生日相互独立,而且等可能的出现在一年 365 天中的任何一天,试问我们需要多少人才能让某两个人的生日在同一天的概率超过 50%。

处理抽象逻辑问题的一个入手点就是先形象化,简单化和实例化。首先不难理解一年只有 365 天,如果屋子里有366 人,那么一定有两个人的出身日期在同一天,此时概率是 100%。如果屋子里只有 1 个人,那么有两个人同一天生日的概率就是 0。试想如果屋子里有 183 人(365 的一半),这些人的生日不重复,于是这种情况将 365 天分成了相当的两部分,一部分属于那 183 人的生日,另一部分不属于 183 人的生日,此时进入第 184 人,这个人的生日只有两种可能,落入第一部分或者第二部分,由于两部分的天数一样多,那么他落入哪一部分的可能性都相同也就是 50%,如果落入第一部分,那么我们就得到两个人有相同生日的情况。由此可见,确切的答案一定在[2,184]之间。

此外解决逻辑问题,特别是算法问题,还有一种有效方法就是暴力破解。也就是我们把所有可能的情况一一罗列出来,找出合适的那个,然后再看看有没有好的方法改进暴力破解法。假设屋子里有 n 人,那么我们罗列出他们所有可能的生日情况,把这些情况中有出现重复的部分抽取出来。在简单情况下,屋子里只有 2 人,每个人的生日可能是 365 天中某一天,于是这两个人可能的生日组合是 365 * 365 = 133,225种情况(注意问题假设,屋子里人的生日相互独立)。 在这么多种组合中,两个人生日在同一天的情况有多少种呢?如果第一个人选定某一天后,第二个人必须跟他一样,由于第一个人只有 365种选择,因此两人生日相同的情况有 365 * 1 = 356 ,于是屋子里有 2 个人时,出现同一天生日的概率是 365 / (365 * 365) = 1 / 365 = 0.27%.

如果屋子里有 3 个人,那么生日情况就有 365 * 365 * 365 = 48,627, 125 种。这种情况比较复杂的是,如何考虑有两个人出现重复生日的情况,稍微大意就会出错。这里我们虽然考虑有两个人生日相同,但如果 3 个人同时生日相同,这种情况也能满足题目要求,所以不能遗漏,3 个人生日相同的情况数量就是 365 * 1 * 1 = 365种。除去 3 人同时生日相同的情况后,我们就能考虑只有 2 人生日相同的情况,如果假设前两个人生日相同,第 3 个人与前两个人不同,那么满足条件的情况就是 365 * 1 * 364 = 132,860,同理第 2 第 3 人生日相同,但第一人与后两人不同的情况也是365 * 1 * 364 = 132,860,最后第 1,3 两人生日相同,第 2 个人跟其他两个不同的情况也是365 * 1 * 364 = 132,860,由此屋子里有 3 个人,其中出现两个人生日相同的情况总数就是 132,860 + 132,860+132,860 + 365,由此对应概率就是(132,860 + 132,860+132,860 + 365)/ 48,627, 125 = 0.82%。

我们上面的枚举方法非常容易出错。要不就是多算了某种情况,要不就是少算了某种情况。例如三个人有相同生日时,我们只能将其算一次,我们不能把他看成第一第二个人生日相同算一次,然后第二第三个人生日相同算一次,然后第一第三个人生日相同又算一次,这么想我们就会将它算成 3 次。另外枚举法随着人数的增多也越来越难以使用,例如 4 个人的时候,我们要考虑只有两个人生日相同,只有三个人生日相同,4 个人生日相同等情况,还有更麻烦的情况是其中两个人生日共同在某一天,然后另外两个人生日又共同在不同的某一天,例如其中两人生日在 3 月 4 日,然后另外两人生日在 5 月 6 日等。

由此看来暴力枚举方法不是解决该问题的有效手段。在概率论上一个有效方法是从反面思考。例如我们直接考虑事件 A 的概率 p发现很难下手,那不妨先考虑非 A 的对应概率1-p,因为只要直到后者,那么前者自然迎刃而解。由此我们看看如果屋子里有 n 个人,那么他们没有人有相同生日的概率怎么算。如果每个人依次走入房间,那么第一个人进入房间时只有他自己,那么此时不可能有人跟他有相同生日,因此这时没有两人有相同生日的概率是 1, 也就是 365 / 365.第二个人接着进入,那么他的生日必须要跟第一个人不同,此时他有 364 种选择,因此此时两人生日不同的概率是 (365 / 365) * (364 / 365),这里用到的一个原则是,两个相互独立的事件,他们同时发生的概率等于两个事件概率的乘机。根据同样的规律,第 3 个人进入房间后,他有 365-2=363 种可能使得他的生日与前两人都不同,因此 3 人没有相同生日的概率是(365 / 365) * (364 / 365) * (363 / 365)。由此可以推测 n 个人进入屋子后,没有人生日相同的概率是(365 / 365) * (364 / 365) * (363 / 365) * … ((365 - (n-1)) / 365)。

这里需要注意的是分子变化,因为分母都是 365。对应第一个人分子是 365,第二个人是 364,因此到第 n 个人时,分子变成 365-(n-1)。我们把上面的连续乘积用符号表示如下:
请添加图片描述
如果我们使用阶乘简化上面公式,阶乘就是 n!= n * (n-1) * … 1,需要注意的是 0! = 1。我们把上面公式展开就是:
请添加图片描述
我们在分子和分母同时乘以(365-n)!,那么就有:

请添加图片描述
如果我们能找到一个最小的 n 值,使得上面公式计算结果小于 1/2,那么问题就能解决,因为当 n人中没有两个人的生日相同的概率小于 1/2,那么其相反事件的概率也就是至少有两人生日相同的概率就大于 1/2,如果使用 f(n)表示上面公式最右边的计算,我们用代码将它的图形画出来看看规律:

import matplotlib.pyplot as plt
import numpy as np
import mathdef no_share_birthday(n):return math.factorial(365) / (365 **n * math.factorial(365-n))x = []
for v in range(50):x.append(v)y = []
for v in x:y.append(no_share_birthday(v))plt.scatter(x, y)
plt.show()print(f"no share birthday with 22 people is :{no_share_birthday(22)}, and with 23 people is {no_share_birthday(23)}")

上面代码运行结果如下:
在这里插入图片描述

no share birthday with 22 people is :0.5243046923374499, and with 23 people is 0.4927027656760146

从绘制的图形看到随着 n 的值越大,对应两个人没有相同生日的概率逐渐减小,在 20 过去一点对应概率就在 0.5 以下,同时我们也在代码中打印出 22 人和 23 人情况下没有人有相同生日的概率,可以看到 22 人的时候概率还在 0.5 以上,到了 23 人概率正好低于 0.5,也就是说当有 23 人时,有两人生日在同一天的概率会超过0.5.

由此可见我们推导的公式可以计算对应概率,但也有问题。一是不够通用,如果一年的天数改变了,我们需要重新计算,例如在火星一年有 687 天,那么房间需要多少火星人才能让其中两个人生日同一天的概率大于 0.5 呢。另外上面的计算公式不够简洁,我们是否能推导出一个好看的数学公式来直接算出相应概率呢,我们下一节看看如何实现这些目标。更多内容请在 b站搜索 coding 迪斯尼。

相关文章:

python 实现 AIGC 大模型中的概率论:生日问题的基本推导

在上一节中,我们对生日问题进行了严谨的阐述:假设屋子里面每个人的生日相互独立,而且等可能的出现在一年 365 天中的任何一天,试问我们需要多少人才能让某两个人的生日在同一天的概率超过 50%。 处理抽象逻辑问题的一个入手点就是…...

YOLOv8算法改进【NO.87】引入上下文引导网络(CGNet)的Light-weight Context Guided改进C2_f

前 言 YOLO算法改进系列出到这,很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解YOLO算法改进方法的顺序选择。具体有需求的同学可以私信我沟通: 第一,创新主干特征提取网络,将整个Backbone改…...

GPT-4V 在机器人领域的应用

在科技的浩渺宇宙中,OpenAI如一颗璀璨的星辰,于2023年9月25日,以一种全新的方式,向世界揭示了其最新的人工智能力作——GPT-4V模型。这次升级,为其旗下的聊天机器人ChatGPT装配了语音和图像的新功能,使得用…...

Java基础语法之访问修饰限定符

private 表示私有的,只能在同一个包中的同一个类使用 像这样就是在同一个包中的不同类用了private修饰的变量,这是非法的,那到底该如何给a赋值呢?可以在定义时就赋值,但这样的代码就没有可操作性,所以我们…...

算法通关村第十八关 | 青铜 | 回溯

1.回溯 回溯可以视为递归的拓展,有着明确的解题模板。 很大的不同之处是有一个撤销处理结果的操作,但是大框架就是遍历 N 叉树。 回溯主要解决暴力枚举都解决不了的问题。 回溯模板: void backtracking(参数) {if (终止条件) {存放结果;…...

蓝牙在物联网中的应用,相比WIFI和NFC的优势?

蓝牙在物联网中有着广泛的应用,主要包括以下几个方面: 1、智能家居:蓝牙Mesh技术可以用于智能家居设备之间的连接和通信,实现设备的远程控制和管理。例如,通过蓝牙技术可以将智能音箱、智能电视、智能家电等设备连接起…...

Altair推出 Altair RapidMiner 2023 平台,提供生成式 AI 功能

Altair推出 Altair RapidMiner 2023 平台,提供生成式 AI 功能 更新包括自动聚类、扩展 SAS、Python 和 R 编程功能等 近日,Altair(纳斯达克股票代码:ALTR)近日宣布其数据分析和 AI 平台 Altair RapidMiner 取得了一系…...

包管理工具npm与yarn

1.npm 1.1 安装 安装node后自带了npm 2.2 初始化package.json npm init 1.3 安装包 单个包:npm install less或npm i less 所有包:npm installnpm i 1.4 删除包 npm remove less,npm r less或npm uninstall less 1.5 配置别名 pack…...

深度学习 Day11——T11优化器对比实验

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU(如果使用的是CPU可以忽略这步)3.导入数据4.查…...

(十六)Flask之蓝图

蓝图 Flask蓝图(Blueprint)是Flask框架中用于组织和管理路由、视图函数以及静态文件的一种机制。它提供了一种将应用程序拆分为更小、可重用组件的方式,使得项目结构更清晰,代码更易于维护。 使用Flask蓝图,可以将相…...

面试问题--文件IO

文件 I/O 操作在 C 语言中的使用 在 C 语言中,文件 I/O(Input/Output)操作是处理文件的重要部分。本文将介绍一些常见的文件 I/O 操作及其使用示例。 打开和关闭文件 1.打开文件: fopen() 函数用于打开一个文件。 FILE *fpt…...

SpringBoot中实现跨域的几种常用方式

在SpringBoot中实现跨域请求可以通过以下几种方式: 1. 使用CrossOrigin注解,可以直接在Controller层的方法上使用,用来指定允许跨域请求的来源、方法和头信息。例如: CrossOrigin(origins "http://localhost:8080") …...

MeterSphere实战(一)

MeterSphere是一位朋友讲到的测试平台,说这东西是开源的,因为我是做测试的,很乐意了解一些新鲜事物。在我看来,测试就是要专注一些领域,然后要啥都会一点点,接着融会贯通起来,这样就可以万变不离…...

ESP32-Web-Server编程-在网页中插入图片

ESP32-Web-Server编程-在网页中插入图片 概述 图胜与言,在网页端显示含义清晰的图片,可以使得内容更容易理解。 需求及功能解析 本节演示在 ESP32 Web 服务器上插入若干图片。在插入图片时还可以对图片设置一个超链接,用户点击该图片时,网页将跳转到图片对应的链接网址…...

<软考>软件设计师-4知识产权与标准化(总结)

(一)知识产权概述 1 知识产权 是指公民、法人、非法人单位对自己的创造性智力成果和其他科技成果依法享有的民事权。是智力成果的创造人依法享有的权利和在生产经营活动中标记所有人依法所享有的权利的总称。包含著作权、专利权、商标权、商业秘密权、植物新品种权、集成电路布…...

唯创知音WTVxxx语音芯片在免洗烘干机中的应用:提升用户体验与产品智能化

在现今这个高科技普及的时代,人们对家电产品的需求不再仅仅满足于基本功能,而是更多的关注用户体验和产品智能化。因此,唯创知音WTVxxx语音芯片在免洗烘干机中的应用,无疑是对这一需求的完美回应。 唯创知音WTVxxx语音芯片是一款…...

golang游戏服务器 - tgf系列课程06

游戏配置 使用框架提供的游戏配置工具,只要两步,开箱即用需求描述 沿用上一节课的案例, 创建道具表,通过道具id在道具服中获取配置中道具的名称Excel 创建配置表根据项目文档中进阶教程目录下ExcelToJson的教程文档,创建指定格式的Excel文件. 脚本 生成脚本 func main() {//…...

【Canvas】记录一次从0到1绘制风场空间分布图的过程

前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 背景 前置知识 风场数据 绘制风场 准备工作 生成二维网格 获取…...

如何用gpt改写文章 (1) 神码ai

大家好,今天来聊聊如何用gpt改写文章 (1),希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 如何用GPT改写文章 一、引言 随着人工智能技术的飞速发展,自然语言处理领域取得了重大突…...

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring依赖注入数值问题

第一章 Spring依赖注入数值问题 1.1 字面量数值 数据类型&#xff1a;基本数据类型及包装类、String语法&#xff1a;value属性或value标签 1.2 CDATA区 语法&#xff1a;<![CDATA[]]>作用&#xff1a;在xml中定义特殊字符时&#xff0c;使用CDATA区 1.3 外部已声明…...

网站SEO优化有哪些技巧

网站SEO优化有哪些技巧 在当前数字化时代&#xff0c;拥有一个高效的网站SEO优化策略至关重要。无论你是新手还是资深网站管理者&#xff0c;了解网站SEO优化的技巧都能帮助你在百度等搜索引擎上获得更高的排名&#xff0c;从而吸引更多的流量。本文将详细探讨网站SEO优化的一…...

百川2-13B-4bits量化模型+OpenClaw:低成本自动化办公方案实测

百川2-13B-4bits量化模型OpenClaw&#xff1a;低成本自动化办公方案实测 1. 为什么选择量化模型OpenClaw组合 去年我接手了一个需要处理大量邮件的项目&#xff0c;每天要花3小时在重复性回复上。当我尝试用OpenClaw自动化流程时&#xff0c;发现原版大模型的显存占用让我的R…...

别再花钱买模板了!用扣子(Coze)和剪映,5分钟搞定城市宣传视频(保姆级节点配置)

零成本打造城市宣传片&#xff1a;Coze剪映全流程实战指南 想象一下这样的场景&#xff1a;你刚接手一个本地文旅推广项目&#xff0c;预算只够买两杯咖啡&#xff0c;但甲方期待的是《航拍中国》级别的视觉大片。传统解决方案要么外包烧钱&#xff0c;要么自己熬夜学剪辑到崩溃…...

制造业如何通过发布带有硬核测试数据和公差对比的 Markdown 表格,极大地提升 DeepSeek 的抓取率?

传统信息源缺乏结构化特征导致大模型难以抽取参数实体。通过部署 GEO 生成式引擎优化&#xff0c;将硬核测试数据封入 Markdown 表格&#xff0c;可强制建立高权重语义关联&#xff0c;直接在AI搜索结果中拦截并影响高意向采购决策。传统分发体系失效的底层逻辑拆解大模型时代&…...

SEO 对于SaaS产品销售有什么影响

SEO对于SaaS产品销售的重要性 在当前的数字化经济时代&#xff0c;软件即服务&#xff08;SaaS&#xff09;产品正日益成为各行各业的首选工具。仅拥有优质的产品还远远不够&#xff0c;如何让潜在客户能够找到并选择你的产品至关重要。这时&#xff0c;搜索引擎优化&#xff…...

c++如何利用C++23的std--expected重构文件操作的错误管理代码【实战】

std::expected<T, E> 是 C23 提供的零成本错误处理机制&#xff0c;强制调用方显式处理成功与失败分支&#xff0c;适用于预期会失败且需响应的场景&#xff08;如文件操作、网络请求&#xff09;&#xff0c;优于 errno 返回值、std::optional 或异常滥用。std::expect…...

【ROS2】DDS通信协议在自动驾驶中的关键应用

1. DDS协议如何成为自动驾驶的"神经系统" 想象一下自动驾驶汽车在城市道路穿行的场景&#xff1a;激光雷达每秒产生数十万点云数据、摄像头实时捕捉高清图像、毫米波雷达持续监测周围物体运动状态——这些海量数据需要在感知、预测、决策模块间高速流转&#xff0c;任…...

OpenClaw本地知识库构建:Qwen2.5-VL-7B处理扫描版PDF与图片资料

OpenClaw本地知识库构建&#xff1a;Qwen2.5-VL-7B处理扫描版PDF与图片资料 1. 为什么选择OpenClaw搭建个人知识管理系统 去年搬家时&#xff0c;我翻出了三大箱纸质资料——从学生时代的课堂笔记到工作后的技术手册&#xff0c;全都堆在角落积灰。这些资料里藏着不少珍贵内容…...

Linux命令-ncftp(增强的的FTP工具)

ncftp 是 Linux 中一个功能强大的 FTP 客户端&#xff0c;提供了比传统 ftp 命令更丰富的功能和更友好的界面。它支持自动登录、断点续传、递归传输、书签管理等功能&#xff0c;是 FTP 操作的强大工具。 &#x1f4d6; 基本语法 ncftp [选项] [主机名] ncftpget [选项] 主机名…...

游戏盾不生效、攻击防不住?策略校验与节点切换教程

做游戏运维和安全的兄弟&#xff0c;基本都碰到过这种糟心事&#xff1a;明明接了游戏盾&#xff0c;服务器还是被打瘫、攻击流量拦不住、正常玩家频繁掉线。很多人第一反应是 “产品垃圾”&#xff0c;但实际 80% 的情况是策略配置错、节点没选对、SDK 接入有问题。这篇就从实…...