【发布时间】:2021-08-05 01:10:23
【问题描述】:
我正在尝试使用以下标准模拟骰子游戏: (1) 您最多可以掷骰子 6 次; (2) 在游戏过程中的任何时候,在观察掷骰结果后,您可以停止游戏,并赢得该掷骰上显示的金额。例如,您的掷骰数是 5、1、3、4,而您 决定停止游戏,则您赢取 4 美元;您的掷骰结果是 5、1、3、4、3、2,如果没有决定停止游戏,那么您将赢得 2 美元。
我现在的功能是
stop_on_6 <- function() {
nrolls <- 0
# set.seed(0)
n <- 1
# generate 1 random integer from uniform distribution on [1,6] with
# equal probability.
while (n <= 6){
roll <- sample(1:6, size = 1, replace = TRUE, prob = rep(1/6, 6))
if (roll == 6) {print('A 6 was rolled')
return (roll)}
n <- n + 1
}
sprintf("You've rolled ", n, " times.")
}
我的目标函数将计算您在n 游戏中的预期赢利,假设您只有在掷骰数为 6 时才停止游戏。
目前,当我调用该函数时,会打印“A 6 was rolling”或“You have rolled 7 times”。我不知道如何使函数最多滚动 6 次,但如果 roll == 6 则停止。
【问题讨论】:
-
您在寻找更优化的策略吗?我认为如果你投到第 5 卷,如果你投到 4/5/6,你应该停止,因为其中任何一个都超过你从第 6 卷得到的 3.5 EV。同样,在第 4 卷上,你应该以 5 或 6 停止,因为掷 5+6 的 EV 是 4.25。 (b/c 你有 50% 的机会以 4/5/6 [EV 5] 结束,或者有 50% 的机会以 EV 3.5 继续掷出 6。等等。