可能是个愚蠢的问题,但我不知道该怎么做。考虑下面的博弈,掷出一个平衡骰子,六个面的数字从1到6,如果掷出4或1,你会输50欧元,如果掷出2或3,什么都不会发生,如果掷出5,你会赢50欧元,如果掷出6,你会赢16×50欧元。我们想知道你平均每场比赛能赢多少钱。设定种子为990,模拟5649次重复的比赛。计算这些重复的奖金的平均值,作为游戏中奖金的期望值的估计值。将这个值圈到小数点后2位。
68bkxrlz1#
这是一个基本R路,芯片侧有一个逻辑索引。
set.seed(990) rolls <- sample(6, 5649, TRUE) win <- integer(5649) win[rolls %in% c(1, 4)] <- -50 win[rolls == 5] <- 50 win[rolls == 6] <- 16*50 mean(win) #> [1] 121.4728
创建于2022年11月27日,使用reprex v2.0.2一个更简单的方法。创建一个奖品向量,并使用掷骰值对其进行索引。
prizes <- c(-50, 0, 0, -50, 50, 16*50) win <- prizes[rolls] mean(win) #> [1] 121.4728
创建于2022年11月27日,使用reprex v2.0.2要输出2位小数的结果,只需
round(mean(win), 2) #> 121.47
wswtfjt72#
#Simulation of the dice roll set.seed(990);dice_roll <- sample(1:6,5649,replace = TRUE) library(dplyr) df <- tibble(dice_roll = dice_roll) df %>% mutate( #Setting each dice roll to their respective result result = case_when( dice_roll == 6 ~ (16*50), dice_roll == 5 ~ 50, (dice_roll == 2 | dice_roll == 3) ~ 0, (dice_roll == 1 | dice_roll == 4) ~ -50, ) ) %>% # The global average summarise(average = round(mean(result),2)) %>% pull(average) [1] 121.47
yxyvkwin3#
可以得到解析解:P(X=-50)= 1/3,P(X=0)= 1/3,P(X=50)= 16,P(X=1650)= 16。E[X] = -50/3 + 0/3 + 50/6 + 1650/6 = 125。
-50/3 + 0/3 + 50/6 + 16*50/6 [1] 125
3条答案
按热度按时间68bkxrlz1#
这是一个基本R路,芯片侧有一个逻辑索引。
创建于2022年11月27日,使用reprex v2.0.2
一个更简单的方法。创建一个奖品向量,并使用掷骰值对其进行索引。
创建于2022年11月27日,使用reprex v2.0.2
要输出2位小数的结果,只需
wswtfjt72#
yxyvkwin3#
可以得到解析解:P(X=-50)= 1/3,P(X=0)= 1/3,P(X=50)= 16,P(X=1650)= 16。
E[X] = -50/3 + 0/3 + 50/6 + 1650/6 = 125。