首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用replicate调用函数1000次

尝试使用replicate调用函数1000次
EN

Stack Overflow用户
提问于 2020-11-13 22:13:44
回答 2查看 44关注 0票数 0
代码语言:javascript
复制
simulate <- function(bankroll, bet, max_iterations) { #gambler's ruin function 
  iteration = 1 
  while (bankroll > 0 & iteration < max_iterations) {
    win <- sample(0:1, size = 1) #either loos or win 
    if (win) {
      bankroll <- (bankroll + bet)
    } else {
      bankroll <- (bankroll - bet)
    }
    iteration <- iteration + 1 
  } 
  return(list(c(iteration, bankroll))) 
} 

simulate(1000, 100, 100) 

我尝试调用上面的函数1000次来获得向量。然后我需要计算有多少次迭代小于100次。有什么建议吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-11-13 22:25:34

这是一个使用base的简单版本

代码语言:javascript
复制
simulate <- function(bankroll, bet, max_iterations) { #gambler's ruin function 
  iteration = 1 
  while (bankroll > 0 & iteration < max_iterations) {
    win <- sample(0:1, size = 1) #either loos or win 
    if (win) {
      bankroll <- (bankroll + bet)
    } else {
      bankroll <- (bankroll - bet)
    }
    iteration <- iteration + 1 
  } 
  return(bankroll)
} 

calls <- replicate(n = 1000,expr = simulate(1000, 100, 100))

calls_less_100 <- calls < 100

result <- length(calls[calls_less_100])

result    

probability <- result/length(calls)

probability
票数 0
EN

Stack Overflow用户

发布于 2020-11-13 22:27:22

这可以简单地简化为:

代码语言:javascript
复制
simulate <- function(bankroll, bet, max_iterations){
         bankroll + bet * sum(sample(c(-1, 1), max_iterations, TRUE))
}

然后你可以这样做:

代码语言:javascript
复制
sum(replicate(1000, simulate(1000, 100, 100))<100)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64822456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档