引言
當從一個連續的區間內,比如[a, b],隨機選擇隨機數的時候,給出的隨機數的數值就服從連續均勻分布。其概率函數,也可以比較容易理解,就是分段函數,區間外的部分概率是0,區間內的部分概率是均勻的值,即區間長度的倒數。
連續均勻分布是指從a到b的連續區間內隨機選擇隨機數的概率分布,其密度函數定義如下:
比如,當 a = 1, b = 3時,連續均勻分布的概率函數f(x)的圖像是:
R實踐
- R中提供了
dunif
函數,dunif
gives the density,也即dunif函數計算,取出某個值的概率,如下:
dunif(x, min = 0, max = 1, log = FALSE)
# 從下可以看出,概率值在指定的區間內,是均勻的。在指定區間之外,概率值就是0.
> dunif(x = 0.5, min = 0, max = 1)
[1] 1
> dunif(x = 0.2, min = 0, max = 1)
[1] 1
> dunif(x = 0, min = 0, max = 3)
[1] 0.333
> dunif(x = -1, min = 0, max = 3)
[1] 0
> dunif(x = 4, min = 0, max = 3)
[1] 0
# 從下可以看出,均勻概率值的大小即為 1/(b-a)
> dunif(x = 0.2, min = 0, max = 2)
[1] 0.5
> dunif(x = 0.2, min = 0, max = 3)
[1] 0.333
所以可以利用dunif
函數繪制上圖的概率函數曲線,如下:
> a <- 1
> b <- 3
> x <- seq(0, 5, 0.01)
> y <- dunif(x = x, min = a, max = b)
> plot(x, y, main = "Density of uniform distribution",xlab = "x",ylab = "Density",col = "red",pch = 19, type = 'l')
- R 中提供了
punif
函數,punif gives the distribution function ,如下:
punif(q, min = 0, max = 1, lower.tail = TRUE, log.p = FALSE)
> punif(q = 0.5, min = 0, max = 1, lower.tail = TRUE, log.p = FALSE)
[1] 0.5
> punif(q = 0.5, min = 0, max = 2, lower.tail = TRUE, log.p = FALSE)
[1] 0.25
> punif(q = 0.5, min = 0, max = 3, lower.tail = TRUE, log.p = FALSE)
[1] 0.167
> punif(q = 0.2, min = 0, max = 1, lower.tail = TRUE, log.p = FALSE)
[1] 0.2
> punif(q = 0.1, min = 0, max = 1, lower.tail = TRUE, log.p = FALSE)
[1] 0.1
- R 中提供了
runif
函數,是生成隨機數的函數。如下:
runif(n, min = 0, max = 1)
> runif(n = 3, min = 0, max = 1)
[1] 0.240 0.812 0.876
> runif(n = 3, min = 0, max = 10)
[1] 9.30 6.60 6.89
參考
- [Continuous Uniform Distribution(http://www.r-tutor.com/elementary-statistics/probability-distributions/continuous-uniform-distribution)