首页 > 解决方案 > 如何使用样本的输出在另一个样本中使用?

问题描述

例如,在我的问题中,当用户翻转硬币时,根据翻转,他们可以掷出 d4 骰子或 d6。(可以这么说,正面可以等于 d6,反面可以等于 d4)。从那里我需要使用蒙特卡罗模拟来找到预期的滚动(答案是 3,但我们需要为它编写代码)。

roll <- function(){
  
  d4 <- sample(1:4,1)
  d6 <- sample(1:6,1)
  
  dice <- sample(c(d4, d6),1)
  coin <- sample(c("H","T"),1)
  
  sum(which(coin == "H") & which(dice == d4))
  
}

mean(replicate(10000, roll()))

我可以用一点点来推动正确的方向

标签: r

解决方案


我想你想要一些类似的东西

coin <- sample(c("H","T"),1)
if (coin=="H") {
   return(sample(1:4,1))
} else {
   return(sample(1:6,1))
}

您实际上并不需要else明确说明该子句(因为代码只会通过ifif 语句coin != "H")。

这可以更紧凑地完成,但以易读为代价(您不需要coin临时存储结果,尤其是因为您只使用该信息一次)。或者它可以通过存储d4d6然后if (coin=="H") { return(d4) } else { return(d6) }.

开始打代码是很有诱惑力的(例如sample(sample(c(4,6),1),1))……或r <- sample(0:1,1); r*sample(4,1) + (1-r)*sample(6,1)或……


推荐阅读