NumPy 二项分布生成与 Seaborn 可视化技巧

二项分布

简介

二项分布是一种离散概率分布,用于描述在固定次数的独立试验中,事件“成功”的次数的概率分布。它通常用于分析诸如抛硬币、做选择题等具有两个结果(成功或失败)的事件。

参数

二项分布用三个参数来定义:

n:试验次数,表示重复相同实验的次数。
p:每次试验中成功事件发生的概率。
k:成功事件发生的次数,范围为 0 到 n。

公式

二项分布的概率质量函数 (PMF) 给出了在 n 次试验中恰好获得 k 次成功的概率,计算公式为:

python">P(k) = C(n, k) p^k (1 - p)^(n - k)

其中:

C(n, k) 是组合数,表示从 n 个元素中选取 k 个元素的方案数。
p^k 表示 k 次成功的概率。
(1 - p)^(n - k) 表示 n - k 次失败的概率。

生成二项分布数据

NumPy 提供了 random.binomial() 函数来生成服从二项分布的随机数。该函数接受以下参数:

n:试验次数。
p:每次试验中成功事件发生的概率。
size:输出数组的形状。

示例:生成 10 次试验中,每次成功概率为 0.5 的事件的成功次数:

python">import numpy as npdata = np.random.binomial(n=10, p=0.5, size=10)
print(data)

可视化二项分布

Seaborn 库提供了便捷的函数来可视化分布,包括二项分布。

示例:绘制 100 次试验中,每次成功概率为 0.6 的事件的成功次数分布:

python">import seaborn as sns
import numpy as npdata = np.random.binomial(n=100, p=0.6, size=1000)
sns.distplot(data)
plt.show()

正态分布与二项分布的关系

当试验次数 n 很大,成功概率 p 接近 0.5 时,二项分布可以近似为正态分布。其均值 μ 为 np,标准差 σ 为 sqrt(np(1 - p))。

示例:比较二项分布和正态分布的形状:

python">import seaborn as sns
import numpy as npn = 100
p = 0.5# 生成二项分布数据
data_binomial = np.random.binomial(n=n, p=p, size=1000)# 生成正态分布数据
mu = n p
sigma = np.sqrt(n p (1 - p))
data_normal = np.random.normal(loc=mu, scale=sigma, size=1000)sns.distplot(data_binomial, label="Binomial")
sns.distplot(data_normal, label="Normal")
plt.legend()
plt.show()

练习

  1. 在 50 次试验中,每次成功概率为 0.2 的事件,模拟成功次数并绘制分布图。
  2. 比较不同试验次数下二项分布形状的变化。
  3. 利用二项分布来模拟一次 10 道选择题的考试,每题答对的概率为 0.7,并计算平均分和及格率(60 分及格)。

解决方案

python">import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt# 1. 模拟成功次数并绘制分布图
data = np.random.binomial(n=50, p=0.2, size=1000)
sns.distplot(data)
plt.show()# 2. 比较不同试验次数下二项分布形状的变化
n_values = [10, 50, 100, 500]
for n in n_values:data = np.random.binomial(n=n, p=0.5, size=1000)sns.distplot(data, label=f"n={n}")
plt.legend()
plt.show()# 3. 模拟考试成绩并计算平均分和及格率
scores

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注


http://www.ppmy.cn/news/1463387.html

相关文章

88道测试工具考核高频题整理(附答案背诵版)

常用的监控工具有哪些? 常用的监控工具有以下几种: Zabbix:是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案,能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知…

【Linux环境搭建实战手册】:打造高效开发空间的秘籍

文章目录 🚀Linux环境搭建💥1. 设备要求❤️2. 了解虚拟机🚀3. 安装VMware🌈4. 终端基础信息解读 🚀Linux环境搭建 💥1. 设备要求 处理器(CPU):至少具有1 GHz的处理能力&…

机器学习入门指南:Jupyter Notebook实战

前言 机器学习作为人工智能领域的核心组成,是计算机程序学习数据经验以优化自身算法、并产生相应的“智能化的“建议与决策的过程。随着大数据和 AI 的发展,越来越多的场景需要 AI 手段解决现实世界中的真实问题,并产生我们所需要的价值。 机…

k8s node NotReady后会发生什么?

K8s 是一种强大的容器编排和管理平台,能够高效地调度、管理和监控容器化应用程序;其本身使用声明式语义管理着集群内所有资源模型、应用程序、存储、网络等多种资源,Node 本身又属于 K8s 计算资源,上面承载运行着各种类型的应用程序,当Node NotReady 后运行在其上面各种 W…

Linux 第三十八章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

一招解决Redis缓存穿透,缓存雪崩,缓存击穿问题【超详细版】

文章目录 小故事一、为什么要使用缓存?二、什么是缓存穿透?怎么解决?2.1解决方案2.2代码实现 三、什么是缓存击穿?怎么解决?3.1解决方案3.2代码实现 四、什么是缓存雪崩?怎么解决?4.1解决方案 五、Redis缓…

正则表达式与Linux常用快捷命令(sort、uniq、tr、cut、paste)

一、sort 作用:以行为单位,对文件内容进行排序 格式: sort 【选项】 参数 常用选项: -n按照数字进行排序-r反向排序-u等同于uniq,表示相同的数据仅显示一行-t指定字段分隔符,默认使用[Tab]键分隔-k指定排…

5.27-作业

定义自己的命名空间my_sapce&#xff0c;在my_sapce中定义string类型的变量s1&#xff0c;再定义一个函数完成对字符串的逆置。 #include <iostream>using namespace std; //定义自己的命名空间 namespace my_sapce {//在命名空间中定义string类型的变量string s1 &quo…

python读写二进制文件

需求&#xff1a;将Test文件夹下所有bin文件中凡是出现128的统一替换成129。 import os root rD:\TXB\Y2022\PROJ\S2106\INNER\内部研究\语音信号处理\智能语音处理\test\pattern_0513 for file in os.listdir(root):if file.endswith(.bin):src_path os.path.join(root, fi…

[Java EE] 网络编程与通信原理(三):网络编程Socket套接字(TCP协议)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

Linux-通配符与正则表达式

补充&#xff1a;命令 输出重定向 标准输出&#xff1a;是将信息输出在终端 标准错误输出&#xff1a;在执行命令的过程中所产生错误信息也是输出在终端 标准输入&#xff1a;从键盘输入 1、标准输入重定向 作用&#xff1a;将本来要显示在终端上的信息重定向到一个文件夹中 …

均值算法详细教程(个人总结版)

背景 均值算法&#xff0c;也称为平均值算法&#xff0c;是统计分析中的基本方法之一。它通过求取一组数据的平均值来概括数据的集中趋势。在数据分析、机器学习、信号处理等领域&#xff0c;均值算法被广泛应用。 均值的种类 算术均值&#xff08;Arithmetic Mean&#xff…

docker 挂载运行镜像

文章目录 前言docker 挂载运行镜像1. 作用2. 命令3. 测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0c;那欢…

刷题之二叉搜索树中第k小的元素(leetcode)

二叉搜索树中第k小的元素 注意二叉搜索树的性质&#xff1a;在二叉搜索树中&#xff0c;任意子节点都满足“左子节点 < 根节点 <<右子节点”的规则。因此二叉搜索树具有一个重要性质&#xff1a;二叉搜索树的中序遍历为递增序列。 当成数组来算&#xff0c;复杂度比…

145.栈和队列:删除字符串中的所有相邻重复项(力扣)

题目描述 代码解决 class Solution { public:string removeDuplicates(string s) {// 定义一个栈来存储字符stack<char> st;// 遍历字符串中的每一个字符for(int i 0; i < s.size(); i){// 如果栈为空或栈顶字符与当前字符不相同&#xff0c;则将当前字符入栈if(st.e…

Python 开心消消乐

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

comfyui电商场景工作流总结

eSheep(内测中) - 一站式的AIGC社区eSheep.com 是国内知名的AIGC在线画图网站,提供海量模型,并支持在线AI画图。用户会上传自己的AIGC作品到网站上,进行交流。eSheep让AIGC更轻松,让更多人在AIGC中找到快乐https://www.esheep.com/apphttps://openart.ai/workflows/all

【Python】 将字符串转换为布尔值在Python中的技巧

基本原理 在Python中&#xff0c;布尔值是True和False&#xff0c;它们是Python中最基本的数据类型之一。然而&#xff0c;在实际编程中&#xff0c;我们经常需要将字符串转换为布尔值&#xff0c;以便进行逻辑判断或条件控制。Python提供了多种方法来实现这一点。 代码示例 …

IDEA创建Spring Boot项目

1 打开新建项目界面 如图1&#xff0c;打开IDEA&#xff0c;点击菜单栏的File->New->Project&#xff0c;打开新建项目界面。 图1 新建项目 2 填写项目信息 在新建项目界面点击左侧工具栏的Spring Initializr选项&#xff0c;进行Spring Boot项目信息的填写&#xff…

【算法】合并k个已排序的链表

✨题目链接&#xff1a; NC51 合并k个已排序的链表 ✨题目描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围&#xff1a;节点总数 0≤&#x1d45b;≤50000≤n≤5000&#xff0c;每个节点的val满足 ∣&#x1d463;&#x1d44e;&#x1d459;∣&…