掷骰子数直到达到停止值

Number of Dice rolling till reaches a Stop Value

我正在尝试计算掷骰子的次数,直到它达到一个明确的停止值。例如,我希望止损值为 100。我正在编写以下代码:

sumofsides <- function(stopvalue) {
  totalsum <- 0
  while (totalsum < stopvalue) {
    face <- sample(6, 1, replace= TRUE)
    totalsum <- totalsum + face
  }
  return(total value)
}

sumofsides(100)
[1] 103

当我写下面的代码来获取滚动的次数,直到它达到停止值。但它总是给出 1 的值,这是错误的。

numofrolls <- function(stopvalue) {
  totalsum <- 0
  while (totalsum < stopvalue) {
    face <- sample(6, 1, replace= TRUE)
    totalsum <- totalsum + face
  }
  return(length(face))
}

numofrolls(100)
[1] 1

感谢任何帮助。

在您当前的循环中,您正在用新值重写 totalsum 每次迭代,因此它的长度永远不会超过 1。一种解决方案是使用第二个变量来计算卷数:

rollUntil <- function(n) {
        nRolls   <- 0
        sumRolls <- 0
        while (sumRolls <= n) {
                sumRolls <- sumRolls + sample.int(6, 1)
                nRolls = nRolls + 1
        }
        return(nRolls)
}


# let's look at the distribution of rolls till 100:
hist(replicate(1000,rollUntil(100)))