0
以下兩段代碼做相同的工作,但給出不同的結果。它需要一個/兩分鐘來運行代碼:兩個編碼用於相同的目的,但給出不同的結果
# chunk 1:
n <- 10000000
set.seed(1)
a <- rbinom(n, 1, .5)
b1 <- (a==0) * rexp(n, 1/182.5)
b2 <- (a==1) * rexp(n, 1/365)
e <- (a==1) * rbinom(n, 1, .5)
b3 <- (e==1) * rexp(n, 1/365)
g <- (1-a)*b1 + a*(b2+b3)
p <- length(g[g>150])/length(g)
p
# chunk 2:
n <- 10000000
set.seed(1)
a <- rbinom(n, 1, .5)
b1 <- rexp(n, 1/182.5)
b2 <- rexp(n, 1/365)
e <- rbinom(n, 1, .5)
b3 <- rexp(n, 1/365)
g <- (1-a)*b1 + a*(b2+b3)
p <- length(g[g>150])/length(g)
p
這2塊相同,因爲,a
等於一,部分(1-a)*b1
在g
將消失,不要緊b1
是否等於零或任何其他值。
同樣,如果沒有a
爲1,g
中的部分a*(b2+b3)
將會消失。因此,b2
的元素是零還是另一個值(如果a
的對應元素是零)並不重要。
但是爲什麼2塊的結果不同?
set.seed()怎麼樣?如果生成隨機分佈,除非定義種子,否則它應該是不同的。 –
@AleksandrVoitov由於'n'足夠大,它會給出2位小數位的相似結果(總是我找到了)。我仍然編輯過。謝謝。 –
@Leaf恕我直言1塊比塊2計算另一個'b1'。取決於'a'的元素的值。對於'a [i]'== 0,計算相同的'b1 [i]',但對於'a [i]'== 1,第一個塊計算'b1 [i]'== 0。 – jogo