上海交大概率论数理统计大作业代码实现解析

上海交大概率论数理统计大作业代码实现解析

前言

前些日子有上交小姐姐概率论与数理统计课程结课了,有一个大作业要做,题目要求使用matlab或者python画图分析并统计有关数据。上海交大不亏是我们这种民办三本比不了的,真人上人,小姐姐根本就没学过编程大作业就要求开始写代码画图。别看博主现在觉得这门作业挺有意思,如果这是博主的概率论大作业,博主估计就呵呵了。于是——小姐姐就想起了我这个高中为数不多的程序猿同学(😅老工具人了)。华科真人下人,博主概率论才刚开课,也不怎么会用代码画图。但是想起我在小姐姐心目中的伟岸形象🙄。无所畏惧!满口答应下来。

不过这次作业的完成博主还是感触颇丰的,学到了许多道理,不会的东西不要等别人教,正如我们华科的那句被吐槽好多的那句“你能做的,起止如此”,博主感觉很有必要把这个学习过程记下来,于是有了这篇博客。


作业题目

交大概率作业

题目解析

概述

初始时就是有两个独立的满足高斯分布的随机变量, 使用bernoulli分布把这两个随机分布组合起来,通俗说就是高斯分布+伯努利分布。

任务一


参数生成随机数

生成随机数

高斯函数随机数

博主刚开始写的时候,看到生成随机数,以为需要博主自己实现代码的编写,于是博主自己就开始写高斯分布的代码,写着写着吐槽了一句后,室友提醒是不是有可以现成的函数。于是我查了一下,果然有别人写好的轮子(吐血)。还好还好,及时止损。numpy中的normal函数就是用来生成高斯分布随机数的。
高斯分布函数如下:
高斯函数
而我们的高斯随机数函数normal参数如下:
random.normal(loc=0.0, scale=1.0, size=None)
官网解释如下:
官网解释normal
参数loc就是我们的“中位数”(mean),就是我们公式里的 μ \mu μ,这个也是我们高斯分布的数学期望。
参数scale就是我们的标准差,也就是我们的 s i g m a sigma sigma(markdown好像显示不出来这个符号)。
参数size就是我们要生成的随机数矩阵的size,比如1000、(3, 4)这种。
而函数返回值就是我们生成的随机数矩阵。矩阵类型是numpy的ndarray格式,如果只生成一个随机数就生成一个数。

Bernoulli函数随机数

Bernoulli函数生成随机数嘛,博主就自己写函数啦,代码如下:

def bernoulli(possi, size):
    random.seed(1)
    ans1 = list()
    for i in range(size):
        ans1.append(1 if random.random() <= possi else 0)
    return ans1

代码本身是很简单的,最后生成返回的是一个列表。

混合高斯分布随机数

有了前两步的步骤后这个混合高斯分布代码就很简单了,只需要我们调用生成随机数后把几项简单加和一下就可以了。代码如下:

pict = np.random.normal(a, c, 1000) + np.multiply((np.random.normal(b, d, 1000)), np.array(bernoulli(e, 1000)))

参数的选取

这里面要求有 μ 1 \mu1 μ1 μ 2 \mu2 μ2

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值