samplemaker_weibull <- function(n=130,shape=4,scale=1,end=1.5 ){
x <- rweibull(n,shape,scale)
t <- runif(n,0,end)
observedx <- x[which(x>t)]
return(observedx)
}
## 設定以下起始值
# 假設需要n_conditioned個observedx
n_conditioned <- 100000
# n_batch: samplemaker_weibull(n = n_batch)
n_batch <- n_conditioned
# pass_ratio: samplemaker_weibull內條件的通過率
pass_ratio <- NULL
# result: 所有生成的樣本
result <- NULL
# len: result的長度, 等於n_conditioned時停止迴圈
len <- 0
## 樣本生成
while(len < n_conditioned) {
N <- samplemaker_weibull(n = n_batch)
# 每次迴圈會計算1次pass_ratio, 並從中找出min
pass_ratio <- c(pass_ratio, length(N)/n_batch)
pr_min <- min(pass_ratio)
# 修改下次迴圈輸入的n_batch: 依據不足樣本數及pass_ratio計算期望值*2
n_batch <- (n_conditioned - length(N))/pr_min*2
# 產生結果並計算結果長度
result <- c(result, N)
len <- length(result)
}
## 得到n_conditioned樣本
result_n_conditioned <- sample(result, n_conditioned, replace = FALSE)
c2FtcGxlbWFrZXJfd2VpYnVsbCA8LSBmdW5jdGlvbihuPTEzMCxzaGFwZT00LHNjYWxlPTEsZW5kPTEuNSApewogIHggPC0gcndlaWJ1bGwobixzaGFwZSxzY2FsZSkKICB0IDwtIHJ1bmlmKG4sMCxlbmQpCiAgCiAgb2JzZXJ2ZWR4IDwtIHhbd2hpY2goeD50KV0KICAKICByZXR1cm4ob2JzZXJ2ZWR4KQp9CgojIyDoqK3lrprku6XkuIvotbflp4vlgLwKCiMg5YGH6Kit6ZyA6KaBbl9jb25kaXRpb25lZOWAi29ic2VydmVkeApuX2NvbmRpdGlvbmVkIDwtIDEwMDAwMAojIG5fYmF0Y2g6IHNhbXBsZW1ha2VyX3dlaWJ1bGwobiA9IG5fYmF0Y2gpCm5fYmF0Y2ggPC0gbl9jb25kaXRpb25lZAojIHBhc3NfcmF0aW86IHNhbXBsZW1ha2VyX3dlaWJ1bGzlhafmop3ku7bnmoTpgJrpgY7njocKcGFzc19yYXRpbyA8LSBOVUxMCiMgcmVzdWx0OiDmiYDmnInnlJ/miJDnmoTmqKPmnKwKcmVzdWx0IDwtIE5VTEwKIyBsZW46IHJlc3VsdOeahOmVt+W6piwg562J5pa8bl9jb25kaXRpb25lZOaZguWBnOatoui/tOWciApsZW4gPC0gMAoKCiMjIOaoo+acrOeUn+aIkAoKd2hpbGUobGVuIDwgbl9jb25kaXRpb25lZCkgewogIE4gPC0gc2FtcGxlbWFrZXJfd2VpYnVsbChuID0gbl9iYXRjaCkKICAKICAjIOavj+asoei/tOWciOacg+ioiOeulzHmrKFwYXNzX3JhdGlvLCDkuKblvp7kuK3mib7lh7ptaW4KICBwYXNzX3JhdGlvIDwtIGMocGFzc19yYXRpbywgbGVuZ3RoKE4pL25fYmF0Y2gpCiAgcHJfbWluIDwtIG1pbihwYXNzX3JhdGlvKQogIAogICMg5L+u5pS55LiL5qyh6L+05ZyI6Ly45YWl55qEbl9iYXRjaDog5L6d5pOa5LiN6Laz5qij5pys5pW45Y+KcGFzc19yYXRpb+ioiOeul+acn+acm+WAvCoyCiAgbl9iYXRjaCA8LSAobl9jb25kaXRpb25lZCAtIGxlbmd0aChOKSkvcHJfbWluKjIKICAKICAjIOeUoueUn+e1kOaenOS4puioiOeul+e1kOaenOmVt+W6pgogIHJlc3VsdCA8LSBjKHJlc3VsdCwgTikKICBsZW4gPC0gbGVuZ3RoKHJlc3VsdCkKfQoKIyMg5b6X5Yiwbl9jb25kaXRpb25lZOaoo+acrApyZXN1bHRfbl9jb25kaXRpb25lZCA8LSBzYW1wbGUocmVzdWx0LCBuX2NvbmRpdGlvbmVkLCByZXBsYWNlID0gRkFMU0Up