溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

R語言生成隨機數(shù)的方法

發(fā)布時間:2021-03-16 09:09:44 來源:億速云 閱讀:1247 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹R語言生成隨機數(shù)的方法,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

1.概述

作為一種語言進行統(tǒng)計分析,R有一個隨機數(shù)生成各種統(tǒng)計分布功能的綜合性圖書館。R語言可以針對不同的分布,生成該分布下的隨機數(shù)。其中,有許多常用的個分布可以直接調(diào)用。本文簡單介紹生成常用分布隨機數(shù)的方法,并介紹如何生成給定概率密度分布下的隨機數(shù)。

2.常用分布的隨機數(shù)

在R中各種概率函數(shù)都有統(tǒng)一的形式,即一套統(tǒng)一的 前綴+分布函數(shù)名:

???d 表示密度函數(shù)(density);

???p 表示分布函數(shù)(生成相應(yīng)分布的累積概率密度函數(shù));

???q 表示分位數(shù)函數(shù),能夠返回特定分布的分位數(shù)(quantile);

???r 表示隨機函數(shù),生成特定分布的隨機數(shù)(random)。

R語言生成隨機數(shù)的方法

2.1各種分布的隨機數(shù)生存函數(shù):

rnorm(n, mean=0, sd=1)  #正態(tài)分布
rexp(n, rate=1)  #指數(shù)
rgamma(n, shape, rate=1, scale=1/rate)  #r 分布
rpois(n, lambda)  #泊松
rt(n, df, ncp)  #t 分布
rf(n, df1, df2, ncp)  #f 分布
rchisq(n, df, ncp=0)  #卡方分布
rbinom(n, size, prob)  #二項分布
rweibull(n, shape, scale=1)  #weibull 分布
rbata(n, shape1, shape2)  #bata 分布runif(n,min=0,max=1) #均勻分布

2.2以二項分布為例,實現(xiàn)上述各類函數(shù):

dbinom(x, size, prob, log = FALSE)# 可用于計算二項分布的概率。
pbinom(q, size, prob, lower.tail = TRUE, log.p = FALSE)#二項分布的分布函數(shù)值
qbinom(p, size, prob, lower.tail = TRUE, log.p = FALSE)#生成二項分布的特定分位數(shù)
rbinom(n, size, prob)#生成二項分布的隨機數(shù)

二項分布隨機數(shù)

二項分布是指n次獨立重復(fù)伯努利試驗成功的次數(shù)的分布,每次伯努利試驗的結(jié)果只有兩個,成功和失敗,記成功的概率為p。生成二項分布隨機數(shù)的函數(shù)是:rbinom() 。句法是:rbinom(n,size,prob)。n表示生成的隨機數(shù)數(shù)量,size表示進行伯努利試驗的次數(shù),prob表示一次貝努力試驗成功的概率。

#例:產(chǎn)生100個n為10,20,50,概率p為0.25的二項分布隨機數(shù):
  
 par(mfrow=c(1,3))
 p=0.25
 for( n in c(10,20,50)) { 
   x=rbinom(100,n,p)
   hist(x,prob=T,main=paste("n =",n))
   xvals=0:n
   points(xvals,dbinom(xvals,n,p),type="h",lwd=3)
  }
 par(mfrow=c(1,1))

R語言生成隨機數(shù)的方法

3.離散隨機變量的生成3.1逆變換法

假設(shè)我們希望生成一個離散型隨機變量X,它有密度

R語言生成隨機數(shù)的方法

我們首先可以生成一個均勻分布的隨機數(shù),使得:

R語言生成隨機數(shù)的方法

R語言生成隨機數(shù)的方法

R語言生成隨機數(shù)的方法

R語言生成隨機數(shù)的方法

R語言生成隨機數(shù)的方法 

#代碼實現(xiàn)如下:<br>p1<-0.15
p2<-0.2
p3<-0.3
p4<-0.35
disRand<-function(i){
 u<-runif(1,0,1)
 if(u<p1) x<-4 else
  if(u<p2+p2) x<-2 else
   if(u<p3+p2+p1) x<-1 else
    x<-3
   return(x)
   }

3.2二項隨機變量的生成

R語言生成隨機數(shù)的方法R語言生成隨機數(shù)的方法

R語言生成隨機數(shù)的方法

Example:假設(shè)要生成1000個服從b(100,0.6)的隨機數(shù)

p<-0.6
n<-100
c<-p/(1-p)
i<-0
pp<-(1-p)^n
f<-pp
binomialRandomeV<-function(o){
 u<-runif(1,0,1)
 f<-
 while(u>=f){
  pp<-c*(n-i)*pp/(i+1)
  f<-f+pp
  i<-i+1
 }
 return(i)
}
sapply(c(1:1000),binomialRandomeV)

以上是“R語言生成隨機數(shù)的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI