用python写一个正态分布的脚本
时间: 2024-04-30 11:22:49 浏览: 13
好的,下面是一个用 Python 实现正态分布的示例脚本:
```
import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 0, 0.1 # 均值和标准差
s = np.random.normal(mu, sigma, 1000)
count, bins, ignored = plt.hist(s, 30, density=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
linewidth=2, color='r')
plt.show()
```
该脚本通过 `numpy` 库的 `random.normal` 函数生成了一个具有给定均值和标准差的正态分布的数据集,然后使用 `matplotlib` 库绘制了直方图并与正态分布的概率密度函数曲线进行比较。
相关问题
使用python写一个正态分布的吉布斯采样
以下是使用Python实现正态分布的吉布斯采样的示例代码:
```python
import numpy as np
def gibbs_sampler(mu, sigma, num_samples, init_x):
"""
:param mu: 正态分布的均值
:param sigma: 正态分布的标准差
:param num_samples: 采样次数
:param init_x: 初始采样值
:return: 采样结果
"""
samples = np.zeros(num_samples)
x = init_x
for i in range(num_samples):
# 对于正态分布,p(y|x)也是正态分布
# 根据公式计算,即可得到y的条件分布
y = np.random.normal(mu, sigma / np.sqrt(2))
x = np.random.normal(y, sigma / np.sqrt(2))
samples[i] = x
return samples
# 示例
mu = 0
sigma = 1
num_samples = 10000
init_x = 0
samples = gibbs_sampler(mu, sigma, num_samples, init_x)
# 绘制采样结果的直方图
import matplotlib.pyplot as plt
plt.hist(samples, bins=50, density=True)
plt.show()
```
在以上示例代码中,我们使用了numpy库中的`np.random.normal()`函数来生成正态分布的随机数。在吉布斯采样中,我们需要先指定一个初始采样值,然后通过条件分布不断迭代生成新的采样值,最终得到一系列样本。最后,我们使用matplotlib库绘制了采样结果的直方图,可以看到采样结果近似于正态分布。
用python写一个满足正态分布的输出散点图的代码
可以使用Python中的matplotlib库来绘制散点图。以下是一个例子,生成满足正态分布的散点图:
```python
import matplotlib.pyplot as plt
import numpy as np
mean = 0 # 均值
std = 1 # 标准差
num_points = 1000 # 点数
x = np.random.normal(mean, std, size=num_points) # 生成x坐标数据,满足标准正态分布
y = np.random.normal(mean, std, size=num_points) # 生成y坐标数据,满足标准正态分布
plt.scatter(x, y, alpha=0.5) # 绘制散点图
plt.show() # 显示图像
```
运行上述代码,即可得到一个正态分布的散点图。