我正在尝试计算骰子数量,直到达到一个明确的停止值。例如,我希望停止值为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
感谢任何帮助。
答案 0 :(得分:3)
在当前循环中,您将使用新值重写totalsum
每次迭代,因此其长度永远不会超过一。一种解决方案是使用第二个变量来计算卷数:
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)))