求密度函数为随机数代码
时间: 2024-05-09 18:16:46 浏览: 43
以下是生成随机数的代码,其中包括密度函数的定义:
```python
import numpy as np
import matplotlib.pyplot as plt
# 密度函数定义
def pdf(x):
return np.exp(-x**2/2)/np.sqrt(2*np.pi)
# 生成随机数
x = np.random.normal(size=10000)
# 绘制概率密度函数图像
fig, ax = plt.subplots()
ax.hist(x, bins=50, density=True, alpha=0.6)
x_vals = np.linspace(-5, 5, 1000)
ax.plot(x_vals, pdf(x_vals), 'r', linewidth=2)
ax.set_xlabel('x')
ax.set_ylabel('Probability density')
plt.show()
```
这段代码首先定义了一个密度函数 `pdf`,然后使用 `np.random.normal` 生成了一组符合正态分布的随机数 `x`。最后,使用 `plt.hist` 绘制了随机数的频数分布直方图,并用 `pdf` 绘制了密度函数的图像。
相关问题
matlab 求已知联合概率密度函数的随机数生成
在 MATLAB 中,可以使用 "rand" 函数来生成均匀分布的随机数。但是,如果我们想要根据已知的联合概率密度函数生成随机数,我们需要使用其他方法。
一种常见的方法是使用反函数变换方法。具体步骤如下:
1. 计算联合概率密度函数的累积分布函数(CDF)。
2. 对 CDF 进行反函数变换,得到变换后的随机变量。
3. 生成均匀分布的随机数,并将其输入到反函数中,得到变换后的随机变量的值。
下面是一段 MATLAB 代码示例,用于根据二元正态分布的概率密度函数生成随机数:
```matlab
% 定义二元正态分布的概率密度函数
mu = [0 0];
Sigma = [1 0.5; 0.5 2];
pdf = @(x) mvnpdf(x,mu,Sigma);
% 计算累积分布函数
cdf = @(x) mvncdf([-inf,-inf],[x(1),x(2)],mu,Sigma);
% 反函数变换
inv_cdf = @(u) [fzero(@(x) cdf([x,u(2)])-u(1),0), fzero(@(x) cdf([u(1),x])-u(2),0)];
% 生成随机数
N = 1000;
u = rand(N,2);
x = arrayfun(inv_cdf,u);
```
在这个示例中,我们首先定义了二元正态分布的概率密度函数。然后,计算了其累积分布函数。接下来,定义了反函数变换,用于将均匀分布的随机数转换为符合二元正态分布的随机数。最后,生成了 1000 个随机数。
用Epanechnikov核函数求概率密度函数的matlab代码
以下是使用Epanechnikov核函数求概率密度函数的Matlab代码示例:
```matlab
% 生成样本数据
x = randn(1,100);
% 生成一组用于计算概率密度函数的数据点
xi = linspace(min(x), max(x), 100);
% 定义Epanechnikov核函数
epanechnikov = @(u) 3/4*(1-u.^2).*(abs(u)<=1);
% 使用Epanechnikov核函数计算概率密度函数
h = 1.06*std(x)*length(x)^(-1/5); % 自适应带宽
fhat = zeros(size(xi));
for i = 1:length(xi)
u = (xi(i)-x)/h;
fhat(i) = mean(epanechnikov(u))/h;
end
% 绘制结果
plot(xi, fhat);
```
该代码首先生成一个长度为100的随机数样本x,然后生成一组用于计算概率密度函数的数据点xi。接下来,定义Epanechnikov核函数,并使用自适应带宽计算概率密度函数。最后,使用Matlab的plot函数绘制概率密度函数。
阅读全文