优草派 > Python

如何使用scipy.stats产生随机数?

刘婷婷         优草派

随机数在数学、统计学、计算机科学等领域中都有广泛的应用。当我们需要模拟一些实验或者设计一些模型时,通常需要使用随机数。Python中的scipy.stats库提供了一些随机数生成函数,本文将从多个角度介绍如何使用scipy.stats产生随机数。

1. 随机数生成函数

如何使用scipy.stats产生随机数?

scipy.stats库中有多个随机数生成函数,其中比较常用的有:

- scipy.stats.uniform():生成在指定区间内的均匀分布随机数。

- scipy.stats.normal():生成服从正态分布的随机数。

- scipy.stats.binom():生成服从二项分布的随机数。

- scipy.stats.poisson():生成服从泊松分布的随机数。

- scipy.stats.expon():生成服从指数分布的随机数。

这些函数的用法类似,以scipy.stats.uniform()为例,可以通过以下代码生成在[0,1)区间内的均匀分布随机数:

``` python

from scipy.stats import uniform

import matplotlib.pyplot as plt

# 生成1000个均匀分布的随机数

rv = uniform(loc=0, scale=1)

r = rv.rvs(size=1000)

# 将随机数绘制成直方图

plt.hist(r, bins=50, density=True)

plt.show()

```

上述代码中,uniform(loc=0, scale=1)表示生成在[0,1)区间内的均匀分布随机数,rv.rvs(size=1000)表示生成1000个随机数。

2. 随机数统计分布

除了生成随机数,scipy.stats库还提供了对应的统计分布函数,可以用于计算随机数的概率密度函数、累积分布函数、分位数等。以正态分布为例,可以通过以下代码绘制正态分布的概率密度函数和累积分布函数:

``` python

from scipy.stats import norm

import numpy as np

import matplotlib.pyplot as plt

# 绘制正态分布的概率密度函数

x = np.linspace(-5, 5, 100)

pdf = norm.pdf(x, loc=0, scale=1)

plt.plot(x, pdf)

# 绘制正态分布的累积分布函数

cdf = norm.cdf(x, loc=0, scale=1)

plt.plot(x, cdf)

plt.show()

```

上述代码中,norm.pdf(x, loc=0, scale=1)表示计算正态分布在x处的概率密度函数值,norm.cdf(x, loc=0, scale=1)表示计算正态分布在x处的累积分布函数值。loc和scale分别表示正态分布的均值和标准差。

3. 随机数拟合

有时候我们需要根据一组数据来拟合出它们所属的分布。scipy.stats库提供了fit()函数可以用于对数据进行拟合。以正态分布为例,可以通过以下代码对一组数据进行正态分布拟合:

``` python

from scipy.stats import norm

import numpy as np

import matplotlib.pyplot as plt

# 生成服从正态分布的随机数

rv = norm(loc=0, scale=1)

r = rv.rvs(size=1000)

# 绘制随机数的直方图

plt.hist(r, bins=50, density=True)

# 对随机数进行正态分布拟合

mu, std = norm.fit(r)

x = np.linspace(-5, 5, 100)

pdf = norm.pdf(x, loc=mu, scale=std)

plt.plot(x, pdf)

plt.show()

```

上述代码中,norm.fit(r)表示对一组数据r进行正态分布拟合,返回拟合后的均值和标准差。拟合后可以用norm.pdf()函数绘制拟合出的正态分布概率密度函数。

4. 随机数假设检验

在统计学中,假设检验是一种通过对样本数据进行统计分析来推断总体特征的方法。scipy.stats库中提供了多个假设检验函数,可以用于检验随机数是否符合某种分布。以正态分布为例,可以通过以下代码对一组数据进行正态性检验:

``` python

from scipy.stats import shapiro

import numpy as np

# 生成服从正态分布的随机数

rv = norm(loc=0, scale=1)

r = rv.rvs(size=1000)

# 对随机数进行正态性检验

stat, p = shapiro(r)

if p > 0.05:

print('样本数据符合正态分布')

else:

print('样本数据不符合正态分布')

```

上述代码中,shapiro(r)表示对一组数据r进行正态性检验,返回统计量和p值。如果p值大于0.05,则认为数据符合正态分布。

  • 微信好友

  • 朋友圈

  • 新浪微博

  • QQ空间

  • 复制链接

取消
5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024