1. 程式人生 > >[R語言常用函式]生成隨機數

[R語言常用函式]生成隨機數

服從正態分佈的隨機數

rnorm(n,mean=0,sd=1)

如果想要生成一個長度為10的向量,向量中的每個值服從標準正態分佈,那麼可以這樣寫

> rnorm(10)
 [1] -0.7125585  2.2070410  1.4730548 -0.6655749  0.5349409 -0.9700122  0.4970766
 [8] -1.7385672  0.9300553 -0.4663140

另外,該函式也可以生成服從一般正態分佈的隨機數,例如
> rnorm(10,mean=1,sd=4)
 [1] -2.520978  3.567172  1.099416  1.029909 -1.239032  1.363111  0.670465
 [8]  4.015274 -7.095845  3.050106

其中mean表示均值,sd表示標準差。

此外,還有其他三個函式,dnorm,pnorm,qnorm。在如上兩種基本用法中只是名字有所不同,效果是一樣的。當然這三個函式還有自己相應的特殊用法,可以通過help(dnorm)進行查詢。

服從均勻分佈的隨機數

runif(n, min = 0, max = 1)

生成一個長度為10的向量,向量中的每個值服從0~1區間上的均勻分佈,那麼可以這樣寫

> runif(10)
 [1] 0.68835411 0.14208554 0.53551407 0.30101879 0.64202722 0.06249627 0.80834355
 [8] 0.26193046 0.90841919 0.94294355

另外,也可以生成其他區間上的隨機數,例如
> runif(10,min=5,max=10)
 [1] 7.771348 8.747055 8.721152 7.517620 6.084385 5.209369 5.532953 5.845175
 [9] 6.683199 9.708647

同樣的,runif也有其他三個函式,dunif,punif,qunif。

其他

除了生成最常見的均勻分佈隨機數和正態分佈隨機數,R還提供了其他各種函式用以生成服從不同分佈的隨機數,常見的函式如下。

rexp 指數分佈
rf F分佈
rgamma  Gamma分佈
rgeom 幾何分佈
rhyper 超幾何分佈
rlnorm 對數正態分佈
rlogis Logistic分佈
rmultinom 多項分佈
rnbinom 負二項分佈
rpois 泊松分佈
rt t分佈
rchisq 卡方分佈

參考

http://bbs.pinggu.org/thread-193449-1-1.html