r - Monty Hall In R - setdiff 出乎意料的结果
问题描述
我正在用 R 编写一个程序来模拟这里解释的蒙蒂霍尔问题,https://www.youtube.com/watch?v= 4Lb-6rxZxx0
考虑这段代码,sample(setdiff(doors, c(pick, car)),1)
“应该”每次都是 3,但事实并非如此。
doors <- 1:3
pick <- 2
car <- 1
sample(setdiff(doors, c(pick, car)),1)
[1] 3
sample(setdiff(doors, c(pick, car)),1)
[1] 1
知道我哪里出错了吗?
谢谢你。
解决方案
你的问题是你最终打电话sample.int
给
doors <- 3L
pick <- sample(doors, 1)
car <- sample(doors, 1)
class(setdiff(doors, c(pick, car)))
#R [1] "integer"
和
length(setdiff(doors, c(pick, car)))
#R [1] 1
见help("sample.int")
或
body(sample)
#R {
#R if (length(x) == 1L && is.numeric(x) && is.finite(x) && x >=
#R 1) {
#R if (missing(size))
#R size <- x
#R sample.int(x, size, replace, prob)
#R }
#R else {
#R ...
除非您的集合中有多个变量,否则抽样没有意义。
推荐阅读
- azure - Azure DevOps (VSTS / TFS) - 通过 OData/API 添加讨论
- r - 如何使用 R 中的绘图功能绘制具有不同颜色的不同组
- c# - Identity Server 4 - API 在部署到服务器时返回 401 Unauthorized
- python - 在python中使用变量的Mysql Update语句
- c# - 具有多个部分的 C# xml 到字典转换
- r - 如何从 zip 读取多个 csv 文件并导入 R 中的不同数据帧?
- ios - 适用于 iOS 的 HERE SDK - 切换服务器环境
- javascript - 我如何限制数组只存储 3 个对象?
- python - pandas 函数 isin 不适用于 def 方法中的数据框
- ansible - 在ansible中从寄存器创建变量