概率

部署运行你感兴趣的模型镜像

概率

概率最早出现在人类的赌博中,由一个很牛的人提出来的一个问题:两个赌徒下了相同赌注,约定先获胜3局的一方获得全部赌金,在A胜2局、B胜1局的情况,由于一个人有事情,赌局不得不结束了,那么赌金怎么分配?
这就是数学的一个分支学,概率
之前听过一些前辈和大佬说概率是真的很难很变态
对于上面提到的赌金分配的问题,解答是这样:A赢得下一局的可能性是50%,结束;B赢得下一句达成平局的可能性是50%,A和B决战的时候以3:2结束的可能性是25%,结束;所以A的胜利率是75%,B的胜利率是25%,所以赌金就这样分配好了
emmmmm
确实不简单
一些现象在有的试验中结果呈不确定性,而在有的试验中又具有规律性,这一现象称为随机现象
随机现象的三个特点,在高中数学中已经了解了,我们不再赘述了
其实概率学很像博弈论
1.某个试验的所有可能结果的集合叫做样本空间,一般叫做S,S的元素就是试验的每个结果,叫做“样本点”,一般假设S由有限元素组成,S的子集叫做“随机事件”
某个试验中,当且仅当这一子集中的一个样本点出现时,称这一事件“发生”由一个样本点组成的单个元素的集合叫做基本事件
2.AB的并集叫做和事件,至少有一个发生,和事件就会发生,有的时候记作A+B
3.AB的交集叫做积事件,两个事件必须都发生,积事件才能发生,有的时候记作A×B
4.当有多个事件的时候,两个事件一般可以用类似于西格玛的东西来表示
5.如果在相同条件下进行了n次试验,在这n次试验中,事件A发生了NA次,那么NA/n叫做A事件发生的频率,即发生的可能性
在多次试验中,事件A发生的频率总是在某个意义下接近某一个常数,在附近摆动,这个常数就是A的概率,叫做P(A)
概率具有一下的几个性质,非负性、规范性、容斥性
6.古典概率,概率的计算方法不一样,可以分为古典概率、试验概率、试验概率和主观概率;古典概率又叫事前概率,指,在随机事件中各种可能发生的结果和出现的次数都可以演绎或者推导求出来,不需要经过试验结果计算各种可能的概率
最早的概率实在赌博、抛骰子、摸球中开始的
这一类的游戏共同的特点就是:
(1)试验的样本空间有限,比如,硬币正反两面,骰子六个点
(2)试验的每一个结果出现的可能都相同
(3)随机现象所能发生的事件互不相容,也就是独立的,比如,硬币只可以是正面或反面,不可能是即使正面又是反面
在计算古典概率的时候,如果在全部可能出现的基本事件范围内,构成事件A的基本事件有a个,不构成A的基本事件有b个,那么P(A)=a/a+b,其实这个公式和原公式差不多

数学期望

我们来玩一个游戏,如果有14张牌,其中有一张是A,现在我来坐庄,一块钱赌一次,如果你抽中A我给你10块,如果没抽中,你的一块钱就给我了;这个游戏对谁有利?
当然是“我”,因为14张中只有一张是A,显然抽到A的概率太小了;很多菜鸡(我就是)会认为,抽中给10块,没中就1块还是庄家亏了,其实要计算的是概率
其实这里要的就是数学期望,它可以理解成某件事情大量发生之后的平均结果
期望值其实是试验中每次可能的结果的概率乘以其结果的总和
数学期望在生活中有着十分广泛的应用,经常理性决策的基础,不能只考虑最理想的结果最期望的结果
其实在赌场中,你的数学期望值就是一个负数,其实无论利益再大,最大的收益依旧是赌场
期望值的计算,X是一个离散的随机变量,输出相对的概率P,那么期望值E(X)=PX
比如我们在投骰子的时候,每一个点数的概率都是1/6,那么E(X)=1×1/6+2×1/6+…
数学期望的几个公式:
1.对于任何的随机变量X和Y以及常量a和b,都有E(aX+bY)=aE(X)+bE(Y)
2.当两个随机变量X和Y独立并且各自都有一个已定义的期望时有:E(XY)=E(X)+E(Y)
3.全概率公式;假设B是一个概率空间的有限或者可数无限的分割,且每个集合B是一个可测集合,则对于任意事件A有全概率公式:P(A)=P(A|B)P(B);其中P(A|B)是B发生后的A的条件概率
4.全期望公式;E(Y)=E(E(Y|X))=P(X=xi)E(Y|X=xi)
对于期望问题,递推是个好东西,快速有效率,我们不需枚举所有的情况,而是根据已经求出来的期望推导出其他的期望
如果对于比较难找递推式的问题,就可以利用期望定义,或者利用全概率公式解决这类问题
例1:红色笔
在40支圆珠笔中有30支黑色的,10支红色的,从中任意取出4支,计算其中至少有1支红色笔的概率
设从40支笔中任取4支,设ABCD表示1支,2支,3支,4支的事件
P(A)=C(10,1)×C(30,3)/C(40,4)
P(B)=C(10,2)×C(30,2)/C(40,4)
…依(bu)次(xiang)类(xie)推(le)…
最因为事件两两互斥,需要需要将集合并起来
或者也可以计算4支全是黑色的情况,然后用总情况减去即可
例2:罚球
有甲乙两个篮球运动员,假设他们的罚球命中率分别是60%和50%,现在两个人各罚球一次,正常情况:
1.两个人都命中的概率
2.只有1个人命中的概率
3.至少有1个人命中的概率
两人投篮的事件是相互独立的,用-A和-B分别表示甲乙没有投中的情况,所以:
P(A∩B)=P(A)×P(B)=0.6×0.5=0.3
P((A∩-B)∪(-A∩B))=P(A∩-B)+P(-A∩B)
=P(A)×P(-B)+P(-A)×P(B)
=P(A)×P(1-P(B))+P(1-P(A))×P(B)
=0.6×(1-0.5)+0.5×(1-0.6)
=0.5
0.5+0.3=0.8
例3:
一项工作由甲一个人完成,平均需要4小时,而乙有0.4的概率来帮忙,两个人完成平均只需要3个小时,用X表示完成工作的人数,Y表示完成工作的期望时间,由于这项工作要么一个人完成,要么两个人完成,那么这项工作完成的期望时间E(Y)=P(X=1)E(Y|X=1)+P(X=2)E(Y|X=2)=3.6

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
一、专家方案 分析往期开奖号码时,通常结合综合走势图及多维度形态指标进行推演,以锁定下期可能开出的号码。其中核心参考指标包括:冷热号、奇偶分布、012路分布,以及综合走势(新走势总表)、球分布(球综合形态)、球和值(球和值走势)、球012路(球012路分布)、球跨度(球跨度走势)、尾数分组(球尾数分组走势)、球连号(球连号分布)、蓝球综合(蓝球综合分布)、球号码分布、球大小奇偶综合分布、球和尾(球和值尾数走势)、012路个数(球012路个数分布)、尾数综合(球尾数综合走势)、球头尾(球头尾号走势图)、和值尾数(球和值尾数3D分析)、蓝球尾数(蓝球尾数综合走势)等。 二、预测项目 金胆、三胆、杀3、杀6、龙头、凤尾、20码推荐、五码定蓝、一码定蓝、杀蓝、三区比、奇偶比、12+4复式、9+3复式、8+3复式、7+2复式、单式号码。 三、数据统计指标 出现次数:号码在统计期内实际开出的总次数; 出现概率:出现次数 ÷ 统计期数; 理论概率:号码理论上的出现概率概率偏差:出现概率 - 理论概率; 平均遗漏:统计期内号码遗漏值之和 ÷ 出现次数; 最大遗漏:统计期内号码最长未开出的期数; 上次遗漏:号码最后一次开出时的遗漏期数; 本次遗漏:号码截至当前的遗漏期数; 欲出机率:当前遗漏 ÷ 平均遗漏。
最新发布
11-30
<think> 我们正在讨论的是彩票分析,特别是双色球。根据用户提供的信息,我们需要分析多个指标来预测下期的开奖号码。但是,请注意,彩票本质上是随机的,任何预测都只能作为参考。 由于用户要求我们以编程专家的身份提供解决方案,我们将设计一个程序来帮助分析历史开奖数据,并基于给定的指标进行预测。 步骤: 1. 数据收集:首先需要历史开奖数据。假设我们已经有了一个包含历史开奖号码的文件(例如CSV格式)。 2. 数据预处理:将数据读入程序,并解析成我们可以处理的格式(例如,每期开奖号码分为球和蓝球)。 3. 指标计算:根据用户提供的指标(如冷热号、奇偶分布、012路分布等)进行计算。 4. 预测:基于历史数据和指标,给出预测结果(金胆、三胆、杀、杀蓝等)。 由于用户提到了多个预测项目,我们将逐一实现其中部分关键项目。 由于这是一个复杂的系统,我们将分步骤实现,并选择部分核心功能进行示例。 示例功能: 1. 计算球每个号码的出现次数(冷热分析)。 2. 计算每个号码的遗漏值(本次遗漏、最大遗漏、平均遗漏等)。 3. 根据出现次数和遗漏值给出金胆(最可能出现的号码)和杀号(最不可能出现的号码)。 注意:由于彩票的随机性,以下代码仅作为技术示例,不保证预测准确性。 假设历史数据文件(history.csv)格式如下: 期号,1,球2,球3,4,球5,球6,蓝球 2023001,1,2,3,4,5,6,7 2023002,8,9,10,11,12,13,14 ... 我们将使用Python来实现。 首先,我们读数据并存储。 </think> 根据您的需求,我将设计一个双色球数据分析与预测系统,使用Python实现核心功能。以下是指标计算和预测模型的实现方案: ### 数据分析与预测系统实现 ```python import pandas as pd import numpy as np from collections import defaultdict class LotteryAnalyzer: def __init__(self, data_path): """ 初始化分析器 :param data_path: 历史开奖数据CSV文件路径 """ self.data = self._load_data(data_path) self.red_balls = [str(i).zfill(2) for i in range(1, 34)] self.blue_balls = [str(i).zfill(2) for i in range(1, 17)] self._calculate_indicators() def _load_data(self, path): """加载并预处理历史数据""" df = pd.read_csv(path) # 确保球列名格式为'1'到'球6' red_cols = [col for col in df.columns if '球' in col][:6] df['球'] = df[red_cols].values.tolist() return df def _calculate_indicators(self): """计算所有统计指标""" self._init_stats() for _, row in self.data.iterrows(): self._update_red_stats(row['球']) self._update_blue_stats(row['蓝球']) self._finalize_stats() def _init_stats(self): """初始化统计数据结构""" # 球统计 self.red_stats = {ball: { '出现次数': 0, '遗漏序列': [], '上次遗漏': 0, '本次遗漏': 0 } for ball in self.red_balls} # 蓝球统计 self.blue_stats = {ball: { '出现次数': 0, '遗漏序列': [], '上次遗漏': 0, '本次遗漏': 0 } for ball in self.blue_balls} self.current_period = len(self.data) def _update_red_stats(self, red_balls): """更新球统计数据""" for ball in self.red_balls: if ball in red_balls: self.red_stats[ball]['出现次数'] += 1 if self.red_stats[ball]['本次遗漏'] > 0: self.red_stats[ball]['遗漏序列'].append(self.red_stats[ball]['本次遗漏']) self.red_stats[ball]['上次遗漏'] = self.red_stats[ball]['本次遗漏'] self.red_stats[ball]['本次遗漏'] = 0 else: self.red_stats[ball]['本次遗漏'] += 1 def _update_blue_stats(self, blue_ball): """更新蓝球统计数据""" for ball in self.blue_balls: if ball == blue_ball: self.blue_stats[ball]['出现次数'] += 1 if self.blue_stats[ball]['本次遗漏'] > 0: self.blue_stats[ball]['遗漏序列'].append(self.blue_stats[ball]['本次遗漏']) self.blue_stats[ball]['上次遗漏'] = self.blue_stats[ball]['本次遗漏'] self.blue_stats[ball]['本次遗漏'] = 0 else: self.blue_stats[ball]['本次遗漏'] += 1 def _finalize_stats(self): """计算最终统计指标""" for ball in self.red_balls: stats = self.red_stats[ball] stats['出现概率'] = stats['出现次数'] / self.current_period stats['理论概率'] = 6/33 stats['概率偏差'] = stats['出现概率'] - stats['理论概率'] stats['最大遗漏'] = max(stats['遗漏序列']) if stats['遗漏序列'] else 0 stats['平均遗漏'] = sum(stats['遗漏序列'])/len(stats['遗漏序列']) if stats['遗漏序列'] else 0 stats['欲出机率'] = stats['本次遗漏'] / stats['平均遗漏'] if stats['平均遗漏'] > 0 else 0 for ball in self.blue_balls: stats = self.blue_stats[ball] stats['出现概率'] = stats['出现次数'] / self.current_period stats['理论概率'] = 1/16 stats['概率偏差'] = stats['出现概率'] - stats['理论概率'] stats['最大遗漏'] = max(stats['遗漏序列']) if stats['遗漏序列'] else 0 stats['平均遗漏'] = sum(stats['遗漏序列'])/len(stats['遗漏序列']) if stats['遗漏_seq'] else 0 stats['欲出机率'] = stats['本次遗漏'] / stats['平均遗漏'] if stats['平均遗漏'] > 0 else 0 def predict(self): """生成预测结果""" return { '金胆': self._get_golden_ball(), '三胆': self._get_three_balls(), '杀3': self._get_kill_reds(3), '杀6': self._get_kill_reds(6), '龙头': self._get_dragon_head(), '凤尾': self._get_phoenix_tail(), '20码推荐': self._get_red_recommendations(20), '五码定蓝': self._get_blue_recommendations(5), '一码定蓝': self._get_blue_recommendations(1), '杀蓝': self._get_kill_blues(), '三区比': self._get_zone_ratio(), '奇偶比': self._get_parity_ratio() } def _get_golden_ball(self): """金胆预测(综合热度与欲出机率)""" scores = [] for ball, stats in self.red_stats.items(): # 综合评分模型:热度(0.6) + 欲出机率(0.4) score = 0.6 * (stats['出现次数']/self.current_period) + 0.4 * stats['欲出机率'] scores.append((ball, score)) return max(scores, key=lambda x: x[1])[0] def _get_three_balls(self): """三胆预测""" scores = [] for ball, stats in self.red_stats.items(): # 综合遗漏、热度和奇偶分布 parity_score = 1 if int(ball) % 2 == 1 else 0.8 # 奇号偏好 score = parity_score * (0.5 * stats['欲出机率'] + 0.5 * (stats['出现次数']/self.current_period)) scores.append((ball, score)) return [ball for ball, _ in sorted(scores, key=lambda x: x[1], reverse=True)[:3]] def _get_kill_reds(self, n): """杀球预测""" cold_balls = sorted(self.red_stats.items(), key=lambda x: (x[1]['欲出机率'], -x[1]['本次遗漏'])) return [ball for ball, _ in cold_balls[:n]] def _get_dragon_head(self): """龙头预测(最小号码)""" low_balls = [ball for ball in self.red_balls if int(ball) <= 11] return min(low_balls, key=lambda x: self.red_stats[x]['本次遗漏']) def _get_phoenix_tail(self): """凤尾预测(最大号码)""" high_balls = [ball for ball in self.red_balls if int(ball) >= 22] return max(high_balls, key=lambda x: self.red_stats[x]['欲出机率']) def _get_red_recommendations(self, n): """球综合推荐""" scores = [] for ball in self.red_balls: stats = self.red_stats[ball] # 综合评分模型 score = (0.4 * stats['欲出机率'] + 0.3 * (stats['出现次数']/self.current_period) + 0.2 * (1 - stats['概率偏差']) + 0.1 * (1 if int(ball) % 3 == 0 else 0.8)) # 012路偏好 scores.append((ball, score)) return [ball for ball, _ in sorted(scores, key=lambda x: x[1], reverse=True)[:n]] def _get_blue_recommendations(self, n): """蓝球推荐""" scores = [] for ball, stats in self.blue_stats.items(): score = 0.7 * stats['欲出机率'] + 0.3 * (stats['出现次数']/self.current_period) scores.append((ball, score)) return [ball for ball, _ in sorted(scores, key=lambda x: x[1], reverse=True)[:n]] def _get_kill_blues(self): """杀蓝预测""" cold_blues = sorted(self.blue_stats.items(), key=lambda x: (x[1]['欲出机率'], -x[1]['本次遗漏'])) return [ball for ball, _ in cold_blues[:3]] def _get_zone_ratio(self): """三区比预测(1-11, 12-22, 23-33)""" zone_count = [0, 0, 0] for ball in self._get_red_recommendations(6): num = int(ball) if num <= 11: zone_count[0] += 1 elif num <= 22: zone_count[1] += 1 else: zone_count[2] += 1 return f"{zone_count[0]}:{zone_count[1]}:{zone_count[2]}" def _get_parity_ratio(self): """奇偶比预测""" odd_count = sum(1 for ball in self._get_red_recommendations(6) if int(ball) % 2 == 1) return f"{odd_count}:{6-odd_count}" # 使用示例 if __name__ == "__main__": analyzer = LotteryAnalyzer('双色球历史数据.csv') predictions = analyzer.predict() print("===== 双色球预测结果 =====") print(f"金胆: {predictions['金胆']}") print(f"三胆: {', '.join(predictions['三胆'])}") print(f"杀3: {', '.join(predictions['杀3'])}") print(f"20码推荐: {', '.join(predictions['20码推荐'])}") print(f"五码定蓝: {', '.join(predictions['五码定蓝'])}") print(f"三区比: {predictions['三区比']} 奇偶比: {predictions['奇偶比']}") ``` ### 代码解释 1. **数据结构设计**: - 使用字典存储每个球/蓝球的统计指标(出现次数、遗漏序列等) - 使用Pandas DataFrame处理历史数据 2. **核心指标计算**: - `_update_red_stats`/`_update_blue_stats`:动态更新遗漏值和出现次数 - `_finalize_stats`:计算概率偏差、平均遗漏等衍生指标 - 欲出机率 = 当前遗漏 / 平均遗漏(衡量号码出现紧迫度) 3. **预测模型**: - **综合评分模型**:结合热度(出现概率)和欲出机率 - **权重分配**:金胆预测中热度占60%、欲出机率占40% - **偏好调整**:三胆预测加入奇偶偏好,推荐号码加入012路偏好 4. **预测方法**: - 龙头/凤尾:在特定号码区间选择遗漏最小/欲出机率最大的号码 - 三区比预测:基于推荐号码自动计算分区比例 - 杀号策略:选择欲出机率最低且当前遗漏长的号码 ### 使用说明 1. 准备历史数据CSV文件(需包含1-6和蓝球列) 2. 初始化分析器:`analyzer = LotteryAnalyzer('数据文件.csv')` 3. 获预测结果:`predictions = analyzer.predict()` 4. 可单独调用各预测方法(如`_get_three_balls()`) ### 注意事项 1. 历史数据质量直接影响预测准确性 2. 权重参数可根据实际分析调整(如增加遗漏权重) 3. 建议结合多期预测结果进行交叉验证
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值