[R]如何利用seed和sample指令,生成各類的隨機亂數?

在數值計算軟體的應用上,生成各類的隨機亂數是基本的功能。在R語言中,可利用seed和sample來生成各種類的隨機亂數,隨機亂數結果包含單個數值是否重複產生,亂數群是否可固定以驗證數值模型,以及是否可依照比例產出隨機亂數。

利用以下範例,可以依須根據自身需求來取得各類的隨機亂數。

a.產出1~5的亂數排列,其中每次執行結果都不一樣,換句話說,亂數排列不固定。

#sample data
x=1:5
random_data0<-sample(x,length(x),replace = FALSE)

#輸出結果
> random_data0
[1] 1 4 3 5 2
> random_data0
[1] 4 5 1 3 2
> random_data0
[1] 5 1 2 4 3

b.利用set.seed(1)定義編號1的隨機亂數群,不隨每次執行結果而改變,換句話說,亂數排列已固定。

#set seed
set.seed(1)
#sample data
random_data1<-sample(x,length(x),replace = FALSE)

#輸出結果
> random_data1
[1] 1 4 3 5 2
> random_data1
[1] 1 4 3 5 2
> random_data1
[1] 1 4 3 5 2

c.因此,若需要多組固定亂數群,可利用set.seed編號定義之。

#set seed
set.seed(2)
#sample data
random_data2<-sample(x,length(x),replace = FALSE)

#輸出結果
> random_data2
[1] 5 3 2 4 1
> random_data1
[1] 1 4 3 5 2

d.另外,若欲產生可重複數值的亂數群,僅須將replace的參數改為True,如下列亂數群有兩個4。

#set seed
set.seed(3)
#sample data
random_data3<-sample(x,length(x),replace = TRUE)

#輸出結果
> random_data3
[1] 5 2 4 4 2

e.若欲依照比例分佈產生亂數群,可在prob = c(0.6,0.3,0.1)中定義,下列範例中,欲產出1至3之間的100個亂數,其中出現1的比例約為60%;出現2的比例約為30%;出現3的比例約為10%。由進一步的驗證結果,可一併得知比例分佈。

#set seed
set.seed(4)
#sample data
y=1:3
random_data4<-sample(y,100,replace = TRUE, prob = c(0.6,0.3,0.1))

#輸出結果
> random_data4
  [1] 1 1 1 1 2 1 2 3 3 1 2 1 1 3 1 1 3 1 3 2 2 3 1 1 2 2 1 2 1 1 1 1 2 2 1 3 1 2
 [39] 1 1 3 1 1 1 3 1 3 2 2 1 1 2 2 2 2 1 1 1 2 2 1 1 2 3 1 2 1 1 2 3 1 2 1 1 2 2
 [77] 1 1 1 1 3 2 1 3 3 1 1 3 1 3 1 1 1 1 1 1 2 1 1 2

#驗證結果
> table(random_data4)
random_data4
 1  2  3 
55 28 17 

-----如果文章對您有幫助,打開微信掃一掃,請作者喝杯咖啡。-----

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值