【发布时间】:2019-10-23 16:29:22
【问题描述】:
我被分配了一个问题,要求我为函数创建数据框,但我不知道如何继续。
要评估停留和切换策略,我们必须多次重复游戏 次根据每个策略确定获胜的比例。去做这个, 编写另一个名为
monty_hall()的函数,它有一个参数iter,即 迭代次数,它返回一个包含iter行和五行的数据框 列。这个函数应该调用monty_hall_one_play()函数。 您可能想要编写某种类型的循环或尝试replicate()。函数
monty_hall()应返回的数据框列是:
car_door,给出隐藏汽车的门。
contestant_door,给出了参赛者最初选择的门。
host_door,给了主人打开的门。
switch,切换策略的结果; 1是赢,0是输。
stay,停留策略结果; 1是赢,0是输。
到目前为止,我的代码看起来像
monty_hall <- function(iter) {
replicate(iter,monty_hall_one_play())
}
monty_hall(5)
我的函数 monty_hall_one_play 的代码是
monty_hall_one_play <- function() {
first <- sample(x = c(1:3),size = 1,replace = FALSE,prob = c(1/3,1/3,1/3))
second <- sample(x = c(1:3),size = 1,replace = FALSE,prob = c(1/3,1/3,1/3))
if (first == 1 & second == 1) {
third = sample(c(2,3),1)
}
if (first == 2 & second == 2) {
third = sample(c(1,3),1)
}
if (first == 3 & second == 3) {
third = sample(c(1,2),1)
}
if (first == 1 & second == 2) {
third = 3
}
if (first == 2 & second == 3) {
third = 1
}
if (first == 3 & second == 1) {
third = 2
}
if (first == 2 & second == 1) {
third = 3
}
if (first == 3 & second == 2) {
third = 1
}
if (first == 1 & second == 3) {
third = 2
}
return(c(first,second,third))
}
“第一”、“第二”和“第三”与分配的元素相关。
这些是方向:
编写一个名为
monty_hall_one_play()的不带参数的函数 并返回一个数字向量,其中每个元素表示以下内容:
第一个元素是隐藏汽车的门 (从
1:3中随机选择)第二个元素是参赛者最初选择的门 (从
1:3中随机选择)第三个元素是宿主揭示的门
如果参赛者选择了带车的门,主持人随机选择 选择剩下的两个门之一
如果参赛者选择了与车门不同的门, 主人选择了没有藏车的门
我不确定如何创建数据框和函数本身。
【问题讨论】:
-
您如何解释
monty_hall_one_play函数的结果?如果我得到 2,3,1 意味着什么? -
我很抱歉,所以数字对应于分配的元素。第一个是汽车隐藏在后面的门,第二个是最初选择的门,第三个是主机透露的门。
标签: r function loops dataframe replicate