書架最初有 n-1 本動物書和 1 本植物書,一本書(動物或植物)從書架上神奇地消失并自動被另一本取代。while 回圈必須在書架上仍然包含至少一本動物書和一本植物書時運行。該函式必須回傳行程停止所用的時間以及上架的書籍型別
-> 我不知道如何計算行程停止所用的時間以及“final_books”是否好。另外,我覺得我犯了一些錯誤,功能似乎有點不對......
# n = number of books
sim_books <- function (n) {
n =50
shelves <- c(rep(0, n - 1), 1)
plant_books <- n-1
animal_books <- 1
while (shelves != 0){
# time it took for the process to stop
time_stop <-
# type that took over the shelves
final_books <- (plant_books|animal_books )
}
return(time_stop, final_books)
}
uj5u.com熱心網友回復:
你可以試試這個方法。如果您有任何問題,請告訴我。
sim_books <- function (n) {
x <- c(-1, rep(1, n-1))
count <- 0
while(!(sum(x) %in% c(n, -n))) {
i <- sample(1:n, 1)
x[i] <- x[i] * -1
count <- count 1
}
return(count)
}
sim_books(4)
[1] 7
uj5u.com熱心網友回復:
你可以試試下面的代碼
f <- function(n) {
shelves <- c(rep(0, n - 1), 1)
iter <- 0
res <- list(shelves)
while (var(shelves) != 0) {
shelves <- (shelves replace(rep(0, n), sample(n, 1), 1)) %% 2
iter <- iter 1
res[[iter 1]] <- shelves
}
list(trajectory = res, niter = iter)
}
你會看到
> f(7)
$trajectory
$trajectory[[1]]
[1] 0 0 0 0 0 0 1
$trajectory[[2]]
[1] 1 0 0 0 0 0 1
$trajectory[[3]]
[1] 1 0 0 1 0 0 1
$trajectory[[4]]
[1] 1 0 0 1 0 0 0
$trajectory[[5]]
[1] 0 0 0 1 0 0 0
$trajectory[[6]]
[1] 0 1 0 1 0 0 0
$trajectory[[7]]
[1] 0 1 0 1 1 0 0
$trajectory[[8]]
[1] 0 1 0 1 1 0 1
$trajectory[[9]]
[1] 0 1 1 1 1 0 1
$trajectory[[10]]
[1] 0 1 1 1 1 1 1
$trajectory[[11]]
[1] 0 0 1 1 1 1 1
$trajectory[[12]]
[1] 0 0 0 1 1 1 1
$trajectory[[13]]
[1] 0 0 1 1 1 1 1
$trajectory[[14]]
[1] 1 0 1 1 1 1 1
$trajectory[[15]]
[1] 1 0 1 1 0 1 1
$trajectory[[16]]
[1] 1 0 1 1 1 1 1
$trajectory[[17]]
[1] 1 1 1 1 1 1 1
$niter
[1] 16
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348988.html
上一篇:如何只為同一個引數執行一次函式
下一篇:計算函式輸出的均值和方差
