張效嘉,胡良平,2*
(1.軍事醫(yī)學(xué)科學(xué)院生物醫(yī)學(xué)統(tǒng)計學(xué)咨詢中心,北京 100850;2.世界中醫(yī)藥學(xué)會聯(lián)合會臨床科研統(tǒng)計學(xué)專業(yè)委員會,北京 100029
基于R軟件實現(xiàn)隨機抽樣及其應(yīng)用
張效嘉1,胡良平1,2*
(1.軍事醫(yī)學(xué)科學(xué)院生物醫(yī)學(xué)統(tǒng)計學(xué)咨詢中心,北京 100850;2.世界中醫(yī)藥學(xué)會聯(lián)合會臨床科研統(tǒng)計學(xué)專業(yè)委員會,北京 100029
本文的目的是使讀者快速掌握用R軟件產(chǎn)生服從多種分布規(guī)律的隨機數(shù)和多種隨機抽樣的方法。通過介紹隨機數(shù)生成器的概念、對應(yīng)的函數(shù)、實際生成服從正態(tài)分布和均勻分布的隨機數(shù),讀者很容易獲得基于R軟件產(chǎn)生所需要的隨機數(shù);通過介紹有放回與無放回隨機抽樣、系統(tǒng)與分層隨機抽樣、整群與bootstrap隨機抽樣的概念和具體實現(xiàn),使讀者輕松地基于R軟件實現(xiàn)多種隨機抽樣。事實表明:R軟件易于獲取、易學(xué)易用;R軟件功能強大、適用面寬,可方便快捷地解決試驗設(shè)計中的隨機抽樣問題。
R軟件;隨機數(shù)生成器;正態(tài)分布;均勻分布;隨機抽樣;bootstrap隨機抽樣
1.1 隨機數(shù)及其種類
1.1.1 概述
所謂隨機數(shù),就是它們在數(shù)量大小和先后順序等方面,出現(xiàn)的規(guī)律是不確定的。然而,人們還可以在一定的前提條件限制下,去生成一系列的隨機數(shù),它們出現(xiàn)的先后順序是隨機的,但它們在整體上卻是服從某種特定規(guī)律的。
由此可知,當人們將“前提條件”設(shè)定為“均勻分布”,就可生成均勻分布隨機數(shù);當人們將“前提條件”設(shè)定為“正態(tài)分布”,就可生成正態(tài)分布隨機數(shù);……;以此類推,還可生成很多服從其他特定分布規(guī)律的隨機數(shù)。
1.1.2 隨機數(shù)生成器種類
在計算機上,生成隨機數(shù)需要基于一定的算法。不同的算法會生成不同的隨機數(shù)。R提供了多種隨機數(shù)生成器(random number generators,RNG),默認的RNG是由Makoto Matsumoto與Takuji Nishimura于1997年-1998年提出的RNG,即Mersenne twister隨機數(shù)生成器。該RNG的循環(huán)周期為219937-1。R還提供了其他幾種RNG,通過在R的控制臺發(fā)送命令“help(RNGkind)”,可以獲得有關(guān)的詳細信息。
若用戶想把默認的RNG更改為自己指定的某種其他的RNG,可通過在R的控制臺發(fā)送命令“RNGkind(kind=“new_rng”)”。注意:這里的“new_rng”只能是下列幾種備選內(nèi)容:Mersenne(默認項)、Wich、Mars、Super、Knuth-TAOCP-2002、Knuth-TAOCP、L’Ecuyer-CMRG。
1.1.3 確保每批生成的隨機數(shù)相同
一般來說,生成隨機數(shù)的函數(shù)每批生成的隨機數(shù)是不同的。但有時,人們需要生成相同批次的隨機數(shù)(如在臨床試驗設(shè)計和模擬試驗時),此時,可以在運行某種隨機數(shù)函數(shù)時,先運行一下set.seed(n)函數(shù)(這里n為一個確定的正整數(shù),如1或2等)。
現(xiàn)以生成均勻分布隨機數(shù)的runif( )函數(shù)為例,在運行此隨機數(shù)函數(shù)之前先運行set.seed( )函數(shù),可使runif( )函數(shù)每批生成的隨機數(shù)相同(生成的隨機數(shù)的長度應(yīng)相同)。
> set.seed(1)
> runif(10)
以上為第一次運行,要求生成在[0,1]區(qū)間內(nèi)且服從均勻分布的10個隨機數(shù)。
[1] 0.26550866 0.37212390 0.57285336 0.90820779 0.20168193 0.89838968
[7] 0.94467527 0.66079779 0.62911404 0.06178627
以上是第一次運行輸出的10個隨機數(shù)。
> set.seed(1)
> runif(10)
以上為第二次運行,仍要求生成在[0,1]區(qū)間內(nèi)且服從均勻分布的10個隨機數(shù)(與前面的10個隨機數(shù)完全相同,此處從略)。
顯然,以上兩次運行,生成的在[0,1]區(qū)間內(nèi)且服從均勻分布的10個隨機數(shù)完全相同。
1.2 用R生成正態(tài)分布隨機數(shù)
【例1】試生成100個服從均值為0、標準差為1的標準正態(tài)分布的隨機數(shù)。
解答:在R中,使用rnorm( )函數(shù)可以生成服從正態(tài)分布的隨機數(shù)。其語法規(guī)則是:rnorm(n,mean=k1,sd=k2),其中,參數(shù)n代表需要生成的隨機數(shù)的個數(shù)、k1為用戶指定的均值、k2為用戶指定的標準差。當k1=0、k2=1時,就是希望生成服從標準正態(tài)分布的n(n必須為一個具體的正整數(shù))個隨機數(shù)。rnorm(n,mean=0,sd=1)=rnorm(n,0,1)=rnorm(n)。
> r_number1<- rnorm(100,0,1);r_number1
以上語句的目的是生成100個服從均值=0、標準差=1的標準正態(tài)分布的隨機數(shù)并將其賦值給變量(本質(zhì)上是一個向量)r_number,然后,將其輸出(輸出結(jié)果從略)。
1.3 用R生成均勻分布隨機數(shù)
在R中,使用runif( )函數(shù)可以生成服從均勻分布的隨機數(shù)。其語法規(guī)則是:runif(n,min=k1,max=k2),其中,參數(shù)n代表需要生成的隨機數(shù)的個數(shù)、k1為用戶指定的服從均勻分布的隨機數(shù)的下限、k2為用戶指定的服從均勻分布的隨機數(shù)的上限。若省略參數(shù)min、max,則默認生成[0,1]上的均勻分布隨機數(shù)。
【例2】試生成1000個服從下限為2、上限為12的均勻分布的隨機數(shù),并用直方圖展示它們。
解答:為實現(xiàn)題中的目標,可使用下面的語句。
> x<- runif(1000,min=2,max=12)
> hist(x,prob=T,main="uniform distribution(min=2,max=12)")
第一句的目的是生成1000個服從下限為2、上限為12的均勻分布的隨機數(shù)。
第二句的目的是繪制這1000個隨機數(shù)的直方圖(無法繪制非標準均勻分布密度函數(shù)曲線)。產(chǎn)生的直方圖從略。
1.4 用R生成其他分布隨機數(shù)
1.4.1 生成指數(shù)分布隨機數(shù)
生成指數(shù)分布隨機數(shù)的函數(shù)為rexp(),其語法規(guī)則是:rexp(n,lamda=1/mean),這里n代表生成的隨機數(shù)的個數(shù),而lamda代表隨機數(shù)的平均值的倒數(shù),mean代表隨機數(shù)的平均數(shù)。
> x<- rexp(1000,1/110);x
以上語句的目的是生成1000個服從均值為110的指數(shù)分布的隨機數(shù)并將其輸出(輸出結(jié)果此處從略)。
1.4.2 生成貝塔分布隨機數(shù)
生成貝塔分布隨機數(shù)的函數(shù)為rbeta(),其語法規(guī)則是:rbeta(n,a,b),這里,n代表生成的隨機數(shù)的個數(shù),而a和b代表該分布的兩個非負的實數(shù)(a>0,b>0)。
> x<- rbeta(100,2,8);x
以上語句的目的是生成100個服從參數(shù)a=2、參數(shù)b=8的貝塔分布的隨機數(shù)并將其輸出(輸出結(jié)果此處從略)。
1.4.3 生成伽瑪分布隨機數(shù)
生成伽瑪分布隨機數(shù)的函數(shù)為rgamma(),其語法規(guī)則是:rgamma(n,shape,rate=1,scale=1/rate),這里,n代表生成的隨機數(shù)的個數(shù),而shape代表該分布的形狀參數(shù)、scale代表尺度參數(shù),這兩個參數(shù)都應(yīng)該為非負實數(shù)(shape>0、scale>0)。注意:rate與scale兩個中只能給定一個的具體值。
> x<- rgamma(100,1,4);x
以上語句的目的是生成100個服從形狀參數(shù)shape=1、尺度參數(shù)scale=1/4的伽瑪分布的隨機數(shù)并將其輸出(輸出結(jié)果此處從略)。
說明:在R中,還可生成許多服從其他分布的隨機數(shù),因篇幅所限,此處從略。
2.1 概述
從給定的一個總體中抽取一定數(shù)目的樣品,稱為抽樣。若總體中的所有樣品被放在一個黑色的袋子中,樣品的形狀、大小、顏色和重量是相同的,只是上面的編號不同。當人們從中抽取若干個樣品時,就稱為隨機抽樣。這里的“隨機”是指被抽取的樣品是哪些,事先是不知道的。若從n個樣品(假定它們構(gòu)成一個總體)中一次性抽取m(m 在R中,可以使用sample( )函數(shù)來實現(xiàn)無放回與有放回隨機抽樣。其語法規(guī)則如下: Sample(x,n,replace=F或T,prob=NULL) x代表總體向量,可以是數(shù)據(jù)、字符、邏輯向量;n代表樣本含量;replace=F,代表無放回隨機抽樣(這是默認的),replace=T,代表有放回隨機抽樣;prob可以設(shè)置各個抽樣單元不同的入樣概率,進行不等概率抽樣。 2.2 有放回隨機抽樣舉例 【例3】假定擲一枚質(zhì)地均勻的硬幣,出現(xiàn)正面用“H”表示、出現(xiàn)反面用“B”表示,現(xiàn)重復(fù)拋硬幣20次,顯示有放回隨機抽樣的結(jié)果。 解答:在R中使用下面的語句就可實現(xiàn)前述的目的。 > sample(c("B","H"),20,rep=T) [1] "B""B""H""B""H""B""H""B""H""H""B""H""B""H""H""H""H""H" [19] "B""B" 以上是20次試驗的結(jié)果,每次試驗的結(jié)果要么是“B”、要么是“H”。其中,“B”出現(xiàn)了9次、“H”出現(xiàn)了11次。 【例4】假定擲一枚質(zhì)地均勻的骰子(6個面上分別有1、2、3、4、5、6個點),現(xiàn)重復(fù)拋骰子20次,顯示有放回隨機抽樣的結(jié)果。 解答:在R中使用下面的語句就可實現(xiàn)前述的目的。 > sample(c(1:6),20,rep=T) [1] 3 2 4 1 5 1 6 1 6 4 3 6 3 6 5 6 4 4 2 2 以上是20次試驗的結(jié)果,每次試驗的結(jié)果是1到6六個數(shù)字中的一個出現(xiàn)。這批試驗的結(jié)果表明,1出現(xiàn)了3次、2出現(xiàn)了3次、3出現(xiàn)了3次、4出現(xiàn)了4次、5出現(xiàn)了2次、6出現(xiàn)了4次。 2.3 無放回隨機抽樣舉例 【例5】現(xiàn)有編號為1~200的200位受試對象,希望從中隨機抽取20位。試顯示被隨機抽取的20位受試者的編號。 解答:在R中使用下面的語句就可實現(xiàn)前述的目的。 > sample(200,20,rep=F) [1] 180 47 91 124 22 141 36 186 193 8 53 67 113 68 154 143 108 59 [19] 123 71 以上是從1~200個編號中無放回地隨機抽取的20個編號。 2.4 系統(tǒng)隨機抽樣舉例 在R中,要想實現(xiàn)分層隨機抽樣或整群隨機抽樣,需要從R軟件中下載sampling包,分別調(diào)用其中的strata( )函數(shù)與cluster( )函數(shù);與此同時,這個包中還有g(shù)etdata( )函數(shù),可以讀取隨機抽樣的全部樣品對應(yīng)的全部信息(否則,只有與抽樣有關(guān)的部分信息)。 但是在R中,筆者目前尚未找到專門用于系統(tǒng)隨機抽樣的函數(shù)。雖然在下面的分層隨機抽樣的strata( )函數(shù)與整群隨機抽樣的cluster( )函數(shù)中,都涉及一個參數(shù),即“method=”, 在等號后面可以輸入四種抽樣方法之一,即srswor(無放回隨機抽樣)、srswr(有放回隨機抽樣)、poisson(泊松隨機抽樣)和systematic(系統(tǒng)隨機抽樣),但這四種具體的抽樣方法都是在前面的分層隨機抽樣或整群隨機抽樣基礎(chǔ)之上的,而不是直接實施這四種具體隨機抽樣的。故此處暫不能進行系統(tǒng)隨機抽樣,若用戶今后從R軟件中發(fā)現(xiàn)了某個包中的某些函數(shù)可直接進行系統(tǒng)隨機抽樣或泊松隨機抽樣,可通過R中的幫助功能,很容易學(xué)會使用。 2.5 分層隨機抽樣舉例 【例6】試以文獻[5]第208-209頁“表9-1”的資料作為“抽樣框”,并以“sex”為分層因素,實施分層隨機抽樣。 解答:在R中,實現(xiàn)分層隨機抽樣的strata( )函數(shù)被放置在sampling包中,使用前必須先下載并導(dǎo)入到R軟件中。操作的步驟如下:①將安裝了R軟件的計算機聯(lián)網(wǎng)并啟動R軟件;②選擇“程序包(Packages)”并選擇一個鏡像(Set CRAN mirror…);③選擇“安裝程序包(Install package(s)…)”;④在彈出的長條形“程序包(packages)”窗口內(nèi)(約有數(shù)千行,其中少部分是“程序包”,絕大多數(shù)是“函數(shù)”)瀏覽sampling;⑤在R中使用下面的語句就可實現(xiàn)前述的目的。 在strata( )函數(shù)中未明確寫出參數(shù)method="srswor",系統(tǒng)默認為“分層(無放回)隨機抽樣”。 > data1<- read.table("F:/studyr/sex_age.txt",header=T) > sub1<- strata(data1,stratanames="sex",size=c(4,5),description=TRUE) 第一句表明,從F盤上文件夾為studyr內(nèi)讀取文本文件sex_age.txt賦值給變量(本質(zhì)上是數(shù)據(jù)框)data1。 第二句表明,調(diào)用strata( )函數(shù),采用默認的隨機抽樣方法(即分層隨機抽樣);設(shè)置分層因素為sex;分別從F層與M層抽取4例與5例受試對象或樣品;需要對隨機抽樣出來的樣品進行詳細描述“description=TRUE”。 Stratum 1 Population total and number of selected units: 12 4 Stratum 2 Population total and number of selected units: 8 5 以上結(jié)果表明,從第1層(即F層)12個樣品中隨機抽取了4個樣品;從第2層(即M層)8個樣品中隨機抽取了5個樣品。 Number of strata 2 Total number of selected units 9 以上結(jié)果表明,總體中總共有兩層,共隨機抽取9個樣品。 Warning message: In strata(data1, stratanames = "sex", size = c(4, 5), description = TRUE) : the method is not specified; by default, the method is srswor 以上結(jié)果表明,系統(tǒng)給出了“警告信息”,在調(diào)用strata( )函數(shù)時,關(guān)于抽樣方法的參數(shù)未指定,作為默認方法,采取的是分層(無放回)隨機抽樣(srswor)。 > sub1 該語句表明,要求系統(tǒng)呈現(xiàn)出分層隨機抽樣的結(jié)果sub1中的與抽樣有關(guān)的樣品信息。 SexIDunitProbStratum1F10.333333314F40.3333333116F160.3333333119F190.333333317M70.625000028M80.6250000210M100.6250000211M110.6250000218M180.62500002 以上結(jié)果表明,第1列為被抽取的樣品的編號、第2列為分層因素sex的水平代碼、第3列為被抽取的樣品在總體中的編號、第4列為各行上的樣品被抽取的概率(F層中總共12個樣品,抽取4個,每一個被抽取的概率為4/12=1/3=0.333333;M層中總共8個樣品,抽取5個,每一個被抽取的概率為5/8=0.625)、第5列為層的編號。 >getdata(data1,sub1) 這一句的目的是調(diào)用getdata( )函數(shù),顯示被抽取的樣本中每個樣品的全部信息(即各變量及其取值)。 idagesexIDunitProbStratum1160F10.333333314457F40.33333331161633F160.33333331191949F190.333333317760M70.625000028864M80.62500002101016M100.62500002111158M110.62500002181840M180.62500002 以上結(jié)果表明,與前面的輸出結(jié)果相比較,增加了“年齡(age)”及其取值。如果原數(shù)據(jù)集(或抽樣總體)中除分層因素外,還有50個變量及其取值,此時,都將全部顯示出來。 在strata( )函數(shù)中明確寫出參數(shù)method="srswor",指明要進行分層(無放回)隨機抽樣。 > data1<- read.table("F:/studyr/sex_age.txt",header=T) > sub2<- strata(data1,stratanames="sex",size=c(4,5),method="srswor",description=TRUE) 與前面的程序相比較,多了參數(shù)method="srswor"。 > sub2 SexIDunitProbStratum4F40.333333316F60.3333333117F170.3333333119F190.333333313M30.625000027M70.625000028M80.6250000211M110.6250000212M120.62500002 以上結(jié)果表明,被抽取的樣品編號發(fā)生了改變。 >getdata(data1,sub2) idagesexIDunitProbStratum4457F40.333333316631F60.33333331171739F170.33333331191949F190.333333313337M30.625000027760M70.625000028864M80.62500002111158M110.62500002121263M120.62500002 以上結(jié)果表明,分層隨機抽樣的結(jié)果發(fā)生了變化。 2.6 整群隨機抽樣舉例 2.6.1 數(shù)據(jù)集介紹 在R軟件的MASS包中,有一個名為Insurance的數(shù)據(jù)集。其內(nèi)記錄了某保險公司1973年第三季度車險投保人的相關(guān)信息。其各觀測(即行)代表投保人,5列的列名分別為:第1列為District(投保人家庭住址所在區(qū)域,代號為1至4);第2列為Group(所投保汽車的發(fā)動機排放量,其各水平分別為:<1升、1.0~1.5升、>1.5~2升、>2升共四個等級);第3列為Age[投保人的年齡,其各年齡檔為:<25歲、25~30歲(不含30歲)、30~35歲、>35歲];第4列為Holders(投保人數(shù)量);第5列為Claims(要求索賠的投保人數(shù)量)。 2.6.2 使用sampling包中的cluster( )函數(shù)進行整群隨機抽樣 > sub3<- cluster(Insurance,clustername="District",size=2,method="srswor",description=TRUE) 以上語句的目的是調(diào)用cluster( )函數(shù)對Insurance數(shù)據(jù)集進行整群隨機抽樣,群的標志為“District”(即區(qū)域)、隨機抽取的群數(shù)為2、將采取簡單(無放回)隨機抽樣(即srswor)方法從4個群中隨機地抽取兩個群、希望對被抽取的樣品信息進行描述(即description=TRUE)。 Number of selected clusters: 2 Population total and number of selected units 64 32 以上結(jié)果表明,隨機抽取了兩個群,共有64個樣品,而被抽取的樣品數(shù)為32個。 > getdata(Insurance,sub3) 以上語句表明,調(diào)用getdata( )函數(shù)顯示從Insurance數(shù)據(jù)集中抽取的兩個群中的全部樣品。 GroupAgeHoldersClaimsDistrictIDunitProb1<1L<2519738110.52<1L25~2926435120.551~1.5L<2528463150.561~1.5L25~2953684160.5……18<1L25~29139192180.519<1L30~35151222190.517<1L<2585222170.5261.5~2L25~29175462260.5…… 以上是被抽取的32個樣品,為節(jié)省篇幅,兩個群內(nèi)都只保留了4個樣品,其他樣品被省略了。由于共有4個群,因此,抽取兩個群時,對于每個群而言,被抽中的概率都為0.5。 2.7 bootstrap隨機重抽樣舉例 2.7.1 概述 bootstrap隨機重抽樣是以原始數(shù)據(jù)為基礎(chǔ)的模擬抽樣統(tǒng)計推斷法,其基本思想是:在原始數(shù)據(jù)范圍(假定總樣本含量為n)內(nèi)做有放回的再抽樣,每次抽取的樣本含量都是m,原始數(shù)據(jù)中每個觀測(樣品或個體)每次被抽中的概率相等,即1/n,所抽得的樣本被稱為bootstrap樣本。 bootstrap樣本有何用途呢?當人們無法駕馭總體但可以反復(fù)獲得bootstrap樣本時,由它們所呈現(xiàn)的規(guī)律就非常接近無法駕馭的那個總體。下面用一個可以駕馭的總體為例,先呈現(xiàn)出總體中一個定量變量的取值的頻數(shù)分布情況,再采取有放回的隨機抽樣,獲得一個樣本含量較大(如1000或10000)的bootstrap樣本,再呈現(xiàn)該bootstrap樣本的頻數(shù)分布。比較這兩個頻數(shù)分布的形狀是否接近。 2.7.2 用于抽取bootstrap樣本的數(shù)據(jù)集 在R中,有一個內(nèi)置的faithful數(shù)據(jù)集(Old Faithful Geyser Data),它記錄了美國懷俄明州黃石國家公園內(nèi)的古老而又忠實的噴泉的噴射持續(xù)時間eruptions(min)和等待時間waiting(min)(即相鄰兩次噴射之間的時間間隔)。 > faithful 此語句用于顯示faithful數(shù)據(jù)集中的全部數(shù)據(jù)(n=272)。 eruptionswaiting13.6007921.8005433.33374……2704.417902711.817462724.46774…… 以上顯示出faithful數(shù)據(jù)集中的開始和結(jié)尾的各3個觀測結(jié)果。 2.7.3 顯示總體中eruptions變量的頻數(shù)分布 > attach(faithful) > hist(eruptions,breaks=25) 第一句的目的是綁定數(shù)據(jù);第二句的目的是繪制eruptions變量的頻數(shù)直方圖,因篇幅所限,圖形從略。 2.7.4 從總體中進行2000次有放回的隨機抽樣,獲得樣本含量n=2000的bootstrap樣本 > boot.sample<- sample(eruptions,2000,rep=T) 以上語句的目的就是為了實現(xiàn)從總體中進行2000次有放回的隨機抽樣,獲得樣本含量n=2000的bootstrap樣本。 2.7.5 將總體與bootstrap樣本中的eruptions變量的頻數(shù)分布直方圖平行地繪制出來 > par(mfrow=c(1,2)) > hist(eruptions,breaks=25) > hist(boot.sample,breaks=25) > par(mfrow=c(1,1)) 以上四個語句的目的分別為: 第一句:設(shè)置作圖窗口為一行兩列(就是希望把兩幅圖左右放置)。 第二句:在左邊放置總體中的eruptions變量的頻數(shù)分布直方圖。 第三句:在右邊放置bootstrap樣本中的eruptions變量的頻數(shù)分布直方圖。 第四句:設(shè)置作圖窗口為一行一列(就是把前面的一行上繪制兩幅圖的設(shè)置改回默認狀態(tài),即一行上只繪制一幅圖)。 由圖形繪制的結(jié)果(因篇幅所限,此處從略)可以清楚地看出:bootstrap樣本呈現(xiàn)的圖形幾乎與總體一模一樣。若總體真是不可駕馭的,那就可以通過bootstrap樣本呈現(xiàn)的形狀去推斷它。 [1] 黃文, 王正林. 數(shù)據(jù)挖掘: R語言實戰(zhàn)[M]. 北京: 電子工業(yè)出版社, 2015: 34-39. [2] 李詩羽, 張飛, 王正林. 數(shù)據(jù)分析: R語言實戰(zhàn)[M]. 北京: 電子工業(yè)出版社, 2015: 88-156. [3] 方匡南, 朱建平, 姜葉飛. R數(shù)據(jù)分析: 方法與案例詳解[M]. 北京: 電子工業(yè)出版社, 2015: 54-168. [4] Joseph Adler. R語言核心技術(shù)手冊[M]. 2版. 劉思喆, 李艦, 陳鋼, 等譯. 北京: 電子工業(yè)出版社, 2015: 417-421. [5] 胡良平. 科研設(shè)計與統(tǒng)計分析[M]. 北京: 軍事醫(yī)學(xué)科學(xué)出版社, 2012:129-274. (本文編輯:陳 霞) The realization of the random sampling and its application based on R software ZhangXiaojia1,HuLiangping1,2* (1.ConsultingCenterofBiomedicalStatistics,AcademyofMilitaryMedicalSciences,Beijing100850,China; 2.SpecialtyCommitteeofClinicalScientificResearchStatisticsofWorldFederationofChineseMedicineSocieties,Beijing100029,China *Correspondingauthor:HuLiangping,E-mail:lphu812@sina.com) The paper aims to make it convenient for readers to utilize R software to generate random number from various distributions and implement varieties of random sampling methods. The paper introduced the conception and corresponding functions of random number generators. We presented cases of generating random number from both normal distribution and uniform distribution. Consequently, readers may easily generate random number by R software. The paper also introduced the conception and realization of random sampling both with and without replacement, systematic random sampling, stratified random sampling, cluster random sampling and bootstrap random sampling. Therefore, readers may use R software to realize varieties of random sampling methods. The fact indicated that R software may be simply obtained and utilized. R software may be used to solve random sampling problem in experimental designs conveniently, due to its powerful function and wide application. R software; Random number generator; Normal distribution; Uniform distribution; Random sampling; Bootstrap random sampling *通信作者:胡良平,E-mail:lphu812@sina.com) R195.1 A 10.11886/j.issn.1007-3256.2016.06.002 國家高技術(shù)研究發(fā)展計劃課題資助(2015AA020102) 2016-12-03)