掷骰子数直到达到停止值
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)))
我正在尝试计算掷骰子的次数,直到它达到一个明确的停止值。例如,我希望止损值为 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)))