练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)

article/2025/6/26 18:21:11

Python 官网 https://www.python.org/


  这里,才 python 前沿。可惜是英文原版。所以,我要练习英文阅读。🧐🧐

  • 我的CSDN主页
  • My Python 学习个人备忘录
  • 我的HOT
  • 老齐教室

  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。

            —— 华罗庚


练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)


  1. 题目
  2. 填空
  3. 概率定义
  4. 蒙特卡洛法
  5. 代码运行效果
  6. 完整代码

回首页

题目
在这里插入图片描述


回首页

关于概率probability 和蒙特卡洛随机模拟法

  如果您您熟知概率和蒙特卡洛之术,请点击<font size=5)跳过,直接阅读后面的内容。
概率(统计学术语)——“科普中国”科学百科词条:

  概率,亦称“或然率”,它是反映随机事件出现的可能性大小。随机事件是指在相同条件下,可能出现也可能不出现的事件。例如,从一批有正品和次品的商品中,随意抽取一件,“抽得的是正品”就是一个随机事件。设对某一随机现象进行了n次试验与观察,其中A事件出现了m次,即其出现的频率为m/n。经过大量反复试验,常有m/n越来越接近于某个确定的常数(此论断证明详见伯努利大数定律)。该常数即为事件A出现的概率,常用 P (A) 表示。


中文名:概率
外文名:probability


  第一个系统地推算概率的人是16世纪的卡尔达诺。记载在他的著作《Liber de Ludo Aleae》中。书中关于概率的内容是由Gould从拉丁文翻译出来的。
  卡尔达诺的数学著作中有很多给赌徒的建议。这些建议都写成短文。然而,首次提出系统研究概率的是在帕斯卡和费马来往的一系列信件中。这些通信最初是由帕斯卡提出的,他想找费马请教几个关于由Chevvalier de Mere提出的问题。Chevvalier de Mere是一知名作家,路易十四宫廷的显要,也是一名狂热的赌徒。问题主要是两个:掷骰子问题和比赛奖金分配问题。
  概率是度量偶然事件发生可能性的数值。假如经过多次重复试验(用X代表),偶然事件(用A代表)出现了若干次(用Y代表)。以X作分母,Y作分子,形成了数值(用P代表)。在多次试验中,P相对稳定在某一数值上,P就称为A出现的概率。如偶然事件的概率是通过长期观察或大量重复试验来确定,则这种概率为统计概率或经验概率。
  研究支配偶然事件的内在规律的学科叫概率论。属于数学上的一个分支。概率论揭示了偶然现象所包含的内部规律的表现形式。所以,概率,对人们认识自然现象和社会现象有重要的作用。比如,社会产品在分配给个人消费以前要进行扣除,需扣除多少,积累应在国民收入中占多大比重等,就需要运用概率论来确定。


来源


  概率(Probability)一词来源于拉丁语“probabilitas”,又可以解释为 probity.Probity的意思是“正直、诚实”,在欧洲probity用来表示法庭案例中证人证词的权威性,且通常与证人的声誉相关。总之与现代意义上的概率“可能性”含义不同。

古典定义

如果一个试验满足两条:
(1)试验只有有限个基本结果;
(2)试验的每个基本结果出现的可能性是一样的。
  这样的试验便是古典试验。
  对于古典试验中的事件A,它的概率定义为:P(A)=,其中n表示该试验中所有可能出现的基本结果的总数目。m表示事件A包含的试验基本结果数。这种定义概率的方法称为概率的古典定义。


频率定义


  随着人们遇到问题的复杂程度的增加,等可能性逐渐暴露出它的弱点,特别是对于同一事件,可以从不同的等可能性角度算出不同的概率,从而产生了种种悖论。另一方面,随着经验的积累,人们逐渐认识到,在做大量重复试验时,随着试验次数的增加,一个事件出现的频率,总在一个固定数的附近摆动,显示一定的稳定性。R.von米泽斯把这个固定数定义为该事件的概率,这就是概率的频率定义。从理论上讲,概率的频率定义是不够严谨的。


统计定义


  在一定条件下,重复做n次试验,nA为n次试验中事件A发生的次数,如果随着n逐渐增大,频率nA/n逐渐稳定在某一数值p附近,则数值p称为事件A在该条件下发生的概率,记做P(A)=p。这个定义称为概率的统计定义。
  在历史上,第一个对“当试验次数n逐渐增大,频率nA稳定在其概率p上”这一论断给以严格的意义和数学证明的是雅各布·伯努利(Jacob Bernoulli) 。
  从概率的统计定义可以看到,数值p就是在该条件下刻画事件A发生可能性大小的一个数量指标。
  由于频率总是介于0和1之间,从概率的统计定义可知,对任意事件A,皆有0≤P(A)≤1,P(Ω)=1,P(Φ)=0。其中Ω、Φ分别表示必然事件(在一定条件下必然发生的事件)和不可能事件(在一定条件下必然不发生的事件)。


公理化定义


  柯尔莫哥洛夫于1933年给出了概率的公理化定义,如下:
  设E是随机试验,S是它的样本空间。对于E的每一事件A赋于一个实数,记为P(A),称为事件A的概率。这里P(A)是一个集合函数,P(A)要满足下列条件:
(1)非负性:对于每一个事件A,有P(A)≥0;
(2)规范性:对于必然事件,有P(Ω)=1;
(3)可列可加性:设A1,A2……是两两互不相容的事件,即对于i≠j,Ai∩Aj=φ,(i,j=1,2……),则有P(A1∪A2∪……)=P(A1)+P(A2)+……


回首页

蒙特卡罗法

  蒙特卡罗法又称随机抽样技巧法统计试验法,在目前结构可靠度计算中,它被认为是一种相对精确法。其基本原理如下:由概率定义知,某事件的概率可以用大量试验中该事件发生的频率来估算,当样本容量足够大时,可以认为该事件的发生频率即为其概率。因此,可以先对影响其可靠度的随机变量进行大量的随机抽样,然后把这些抽样值一组一组地代入功能函数式,确定结构是否失效,最后从中求得结构的失效概率。蒙特卡罗法正是基于此思路进行分析的。


  从蒙特卡罗方法的思路可看出,该方法回避了结构可靠度分析中的数学困难,不管状态函数是否非线性、随机变量是否非正态,只要模拟的次数足够多,就可得到一个比较精确的失效概率和可靠度指标。特别在岩土体分析中,变异系数往往较大,与JC法计算的可靠指标相比,结果更为精确,并且由于思路简单易于编制程序


  蒙特卡洛随机模拟法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论


回首页

  1. append
birthday_lst = [] # 本次实验全班生日列表。for i in range(class_size): # random 模拟全班生日。birthday_lst.append(random.randint(0, 364))

  1. ix +1

  2. count += 1

for ix in range(class_size): # 遍历本次实验全班生日,计算有相同生日实验次数。if birthday_lst[ix] in birthday_lst[ix+1:]: # True,当前生日在本次实验的全班生日中有相同的。(在当前生日之后的生日列表切片副本中,有当前生日——即生日相同。)count += 1 # 生日相同计算器加1。break # 找到相同生日,即为有相同生日,不用继续遍历。

回首页

在这里插入图片描述

在这里插入图片描述


回首页

完整 Python 代码


  我的解题思路,已融入代码注释,博文中就不再赘述。

(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)

#!/sur/bin/env python
# coding: utf-8'''
filename: /sdcard/qpython/tem.py
梦幻精灵_cq的炼码场'''from mypythontools import color, wait, cut_line # 从自码工具模块加载需用代码模块中要使用的函数。
import random # 加载随机数模块class_size = 50 # 班级人数。
tries = 1000 # 蒙特卡洛实验次数蒙特卡洛随机模拟法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。
count = 0 # 有生日相同的实验次数。
for test in range(tries): # 遍历设定的实验次数。birthday_lst = [] # 本次实验全班生日列表。for i in range(class_size): # random 模拟全班生日。birthday_lst.append(random.randint(0, 364))for ix in range(class_size): # 遍历本次实验全班生日,计算有相同生日实验次数。if birthday_lst[ix] in birthday_lst[ix+1:]: # True,当前生日在本次实验的全班生日中有相同的。(在当前生日之后的生日列表切片副本中,有当前生日——即生日相同。)count += 1 # 生日相同计算器加1。break # 找到相同生日,即为有相同生日,不用继续遍历。print(f"\n\n{' ':>4}在班容量这{color(class_size, 'f_green')}的情况下,一共模拟了{color(tries, 'f_green')}次实验。\
\n{' ':>4}生日相同的情况出现{color(count, 'f_green')}个,概率为{color(round(count/tries, 4) * 100, 'f_green')}%。")wait() 

回首页

上一篇: 求偶数和、阈值分割和求差( list 对象的两个基础小题 )

下一篇: 均衡办公室人数


我的HOT博:

  • 用 pandas 解一道小题(1914阅读)
  • 可迭代对象和四个函数(1042阅读)
  • “快乐数”判断(1201阅读)
  • 罗马数字转换器(构造元素取模)(1894阅读)
  • 罗马数字(转换器|罗生成器)(2546阅读)
  • Hot:让QQ群昵称色变的代码(16354阅读)
  • 斐波那契数列(递归| for )(3288阅读)
  • 柱状图中最大矩形(1623阅读)
  • 排序数组元素的重复起止(1215阅读)
  • 电话拨号键盘字母组合(1277阅读)
  • 密码强度检测器(1736阅读)
  • 求列表平衡点(1787阅读)
  • Hot: 字符串统计(3528阅读)
  • Hot:尼姆游戏(聪明版首发)(3334阅读)尼姆游戏(优化版)(902阅读)
推荐条件 点阅破千

回首页


老齐漫画头像

精品文章:

  • 好文力荐:《python 完全自学教程》齐伟书稿免费连载
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回首页

Python 入门指南【Python 3.6.3】


好文力荐:

  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告


http://chatgpt.dhexx.cn/article/k5c5lq1U.shtml

相关文章

研究生常用的几种风险评估方法-专家调查法、蒙特卡洛模拟法、计划评审技术、敏感性分析法、决策树法、影响图法、模糊综合评价方法

其实风险评估就是在充分掌握资料的基础之上&#xff0c;采用合适的方法对已识别风险进行系统分析和研究&#xff0c;评估风险发生的可能性&#xff08;概率&#xff09;、造成损失的范围和严重程度&#xff08;强度&#xff09;&#xff0c;为接下来选择适当的风险处理方法提供…

蒙特卡洛模拟法计算电动汽车充电负荷(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码实现 &#x1f4a5;1 概述 伴随环境问题的影响,以及电动汽车技术的不断成熟,电动汽车对电网影呵不断增加。电下1左此放电过程中不但可能导致局部过负荷…

(四十四)蒙特卡洛模拟法计算VaR

思路简介 每一次蒙特卡洛模拟&#xff0c;对资产组合中的每一资产按照随机过程公式模拟出下一个交易日的价格&#xff0c;公式中的ε可以假定服从t分布或正态分布&#xff08;即资产收益率服从的分布&#xff09;&#xff0c;然后可以得到每一资产的收益率&#xff0c;乘以各自…

基于拟蒙特卡洛模拟法的随机潮流计算matlab程序

电力系统随机潮流计算中常采用模拟法&#xff0c;该方法原理简单、使用方便&#xff0c;能够精确地模拟实际物理过程&#xff0c;但是简单的蒙特卡洛模拟法收敛速度很慢&#xff0c;要得到精确的结果需要以大量的计算时间为代价。本章在此基础上提出了基于拟蒙特卡洛模拟的随机…

【Python量化】蒙特卡洛模拟法预测股价走势

文章目录 蒙特卡罗模拟法的定义蒙特卡罗模拟法的的Python实现蒙特卡洛模拟法模拟股票收益率序列蒙特卡洛模拟法模拟股价序列蒙特卡洛模拟法绘制模拟股价序列图 此文章首发于公众号&#xff1a;Python for Finance 链接&#xff1a;https://mp.weixin.qq.com/s/43KQgH-BArop29u…

Ubuntu18.04上安装ROS的详细教程

文章目录 前言一、环境配置二、安装步骤1.添加ROS软件源2.添加密钥3.更换软件源4.安装ROS5.初始化rosdepc6.设置环境变量7.安装 rosinstall8.验证ROS是否安装成功 总结参考文献 前言 最近&#xff0c;学习了胡老师的《ROS入门21讲》&#xff0c;在Ubuntu18.04上安装ROS过程中遇…

在Ubuntu18.04中安装ROS教程

1.创建虚拟机 自定义安装&#xff0c;手动选择镜像文件&#xff0c;处理器选择1个处理器&#xff0c;8个核心&#xff0c;其他选择默认的即可。 2.换源 新装的虚拟机会提示更新&#xff08;不是更新系统&#xff09;&#xff0c;建议换完源之后再更新。 左下角点开&#xff…

Ubuntu 安装 ROS 详细教程

最近需要用ROS控制一个小车底盘&#xff0c;然后发现不会了。。。 所以写一篇博客记录一下&#xff0c;以便以后查阅。 OS&#xff1a;Ubuntu 20.04 ROS&#xff1a;noetic 1. 设置Ubuntu的软件和更新 在搜索框输入software&#xff0c;选择软件和更新一项&#xff0c;勾选 ma…

Ubuntu18.04、Ubuntu20.04之ROS安装教程

目录 Ubuntu20.04之ROS&#xff08;noetic&#xff09;安装教程 Ubuntu18.04之ROS&#xff08;melodic&#xff09;安装教程 ubuntu20.04之ROS&#xff08;noetic&#xff09;安装教程 1、软件源&#xff08;作用是比官方快&#xff09; sudo sh -c . /etc/lsb-release &…

ROS安装超详细保姆级教程

1.版本选择 ROS与Ubuntu版本是有着对应关系的&#xff0c;其中Ubuntu1604 ROS Kinetic&#xff1b;Ubuntu1804 ROS Melodic&#xff1b; Ubuntu2004 ROS Noetic 本文以 Ubuntu2004 ros noetic 进行安装操作演示 2.安装实操 2.1 打开网站http://wiki.ros.org/noetic/Ins…

ubuntu20.04安装ROS极简教程 (noetic)

1.基础安装步骤 # 1.添加 sources.list sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list # 2.添加 keys sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-ke…

ubuntu16.04 ROS安装

ros安装官方链接&#xff1a;cn/kinetic/Installation/Ubuntu - ROS Wiki 建议参考链接&#xff1a;Ubuntu16.04 安装ROS Kinetic 究级详细教程_IU知恩于心的博客-CSDN博客_ubuntu16.04安装ros 问题现象&#xff1a; 下列软件包有未满足的依赖关系&#xff1a; ros-kinetic…

详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)

2020年的10月份&#xff0c;我整理写了一篇名为&#xff1a;详细介绍如何在ubuntu20.04中安装ROS系统&#xff0c;以及安装过程中出现的常见错误的解决方法&#xff0c;填坑&#xff01;&#xff01;&#xff01;的博客&#xff0c;已经经过了很多小伙伴的验证&#xff0c;确实…

ros2安装教程

ros官网安装指导&#xff1a; https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html 1、确保支持UTF-8语言环境 locale # check for UTF-8sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-loca…

Apollo ROS安装教程

1.安装Ubuntu 14.04 2.安装ROS Indigo版本 安装可能以下出现的问题 错误信息&#xff1a;Unpacking ros-indigo-desktop-full (1.1.6-0trusty-20181006-135515-0800) ... Errors were encountered while processing:/var/cache/apt/archives/python-rosdistro-modules_0.7.0…

Ubuntu 安装 ROS 教程

Ubuntu 安装 ROS 一、修改为国内镜像源二、ROS 官网安装介绍&#xff08;kinetic-16.04、melodic-18.04、noetic-20.04&#xff09;三、ROS 安装步骤1.添加 ROS 软件源到 sources.list2.导入密钥3.更新4.安装 ROS 完整版5.初始化rosdep第一步第二步 6.配置环境变量7.安装 rosin…

Ubuntu18.04安装 ROS Melodic教程

Ubuntu对应ROS的不同版本&#xff1a; 我的操作系统为Ubuntu 18.04 LTS 64bit应采用ROS版本为ROS Melodic。 下面以我的版本为例&#xff1a; 配置Ubuntu软件仓库 打开软件中心&#xff0c;按照下图进行配置。 确保你的"restricted"&#xff0c; “universe&#…

ROS安装教程详解

一、准备工作 1. 一个装有Ubuntu14.04镜像文件的U盘启动盘 2. 电脑安装EASYBCD、分区助手软件 3. 保证电脑硬盘有一个分区有足够的空间安装ROS,和Ubuntu14.04 二、制作启动盘 1.首先我们先安装软碟通,完成安装后打开软碟通,文件->打开,打开我们的iso镜像 2.然后选择…

ROS安装教程(ubuntu18.04+melodic版本)

1. ROS版本选择 ROS是一个用于编写机器人软件的灵活框架&#xff0c;它集成了大量的工具、库、协议&#xff0c;提供了类似操作系统所提供的功能&#xff0c;包括硬件抽象描述、底层驱动程序管理、公用功能的执行、程序间的消息传递、程序发行包管理&#xff0c;可以极大简化繁…

ROS 安装教程Ubuntu16.04(2022年最新)

ROS是机器人操作系统&#xff08;Robot Operating System&#xff09;的英文缩写,源自斯坦福的开源项目。 Ubuntu16.04只能安装ROS Lunar Loggerhead或ROS Kinetic Kame 依次完成以下四步. 第四步提示是否不验证&#xff0c;需输入y ,等待安装完成 sudo sh -c echo "de…