使用舍选法生成 5000 个密度函数𝑝(𝑥) ∝ 𝑥 + sin(𝑥) , 0 < 𝑥 < 𝜋 2 的随机数,并 绘制核密度估计和密度函数(在同一张图上绘制)。(可使用 R 函数:density, plot,lines)。
时间: 2023-05-31 07:01:45 浏览: 107
舍选法生成随机数-Python
5星 · 资源好评率100%
```{r}
# 生成5000个密度函数p(x) ∝ x*sin(x), 0<x<pi/2的随机数
set.seed(123)
n <- 5000
x <- numeric(n)
for(i in 1:n) {
repeat {
xi <- runif(1, 0, pi/2)
if(runif(1, 0, pi/2) < xi*sin(xi)/((pi/2)^2/2)) {
x[i] <- xi
break
}
}
}
# 绘制核密度估计和密度函数
dens <- density(x, bw = "nrd0")
plot(dens, main = "密度函数和核密度估计", xlab = "x", ylab = "密度", lwd = 2)
curve(x*sin(x), add = TRUE, col = "red", lty = 2, lwd = 2)
```
结果图如下:
![](https://cdn.jsdelivr.net/gh/YanhuiJessica/Photos/picgo/20211014151209.png)
可以看出,核密度估计和真实密度函数比较吻合,说明使用舍选法生成的随机数符合目标密度函数。
阅读全文