对离散函数采样
时间: 2023-10-18 11:13:54 浏览: 55
对于离散函数,我们可以使用概率抽样的方法进行采样。具体步骤如下:
1. 首先计算每个离散值对应的概率分布(即归一化后的频率)。
2. 然后生成一个0到1之间的随机数,记为r。
3. 然后对于每个离散值i,计算其累积概率分布,即从第一个离散值到第i个离散值的概率和,记为p_i。
4. 找到第一个满足p_i >= r的离散值i,即为采样结果。
下面是一个简单的Python代码示例:
```python
import numpy as np
# 定义离散概率分布函数
def discrete_distribution(x):
if x == 0:
return 0.1
elif x == 1:
return 0.3
elif x == 2:
return 0.2
elif x == 3:
return 0.4
else:
return 0
# 进行离散概率分布采样
def discrete_sampling(discrete_distribution, n_samples):
samples = np.zeros(n_samples)
for i in range(n_samples):
# 生成一个0-1之间的随机数
r = np.random.uniform()
# 计算累积概率分布
cdf = np.cumsum([discrete_distribution(j) for j in range(5)])
# 找到第一个满足p_i >= r的离散值i
for j in range(5):
if cdf[j] >= r:
samples[i] = j
break
return samples
# 进行离散概率分布采样
samples = discrete_sampling(discrete_distribution, 10000)
# 输出采样结果
print("Mean: ", np.mean(samples))
print("Variance: ", np.var(samples))
```
在上面的代码中,我们定义了离散概率分布函数 `discrete_distribution` 和离散概率分布采样函数 `discrete_sampling`。我们使用离散概率分布函数进行10000次采样,并输出采样结果的均值和方差。