R 计算法国轮盘赌估值的无法解释的百分比误差

R 计算法国轮盘赌估值的无法解释的百分比误差,r,probability,percentage,R,Probability,Percentage,我正在为班级做一个项目:关于四种不同的法国轮盘赌(37个数字)策略的统计评估。 前两个非常简单: 一次赌红色 B.赌第一次 请查找以下代码: BettingOnRed <- function(){ ball <- sample(1:37, 1, replace=TRUE) if(ball <= 18) amount_won <- 1 else amount_won <- -1 c(amount_won, 1) } B

我正在为班级做一个项目:关于四种不同的法国轮盘赌(37个数字)策略的统计评估。 前两个非常简单:

  • 一次赌红色
  • B.赌第一次
请查找以下代码:

BettingOnRed <- function(){
  ball <- sample(1:37, 1, replace=TRUE)  
  if(ball <= 18)  amount_won <- 1
  else            amount_won <- -1
  c(amount_won, 1)
}

BettingOnNumber <- function() {
  myNumber <- 17
  ball <- sample(0:36, 1, replace=TRUE)
  if(myNumber == ball)  amount_won <- 35
  else                  amount_won <- -1
  c(amount_won, 1)
}

注意,这不是全部功能,我只是删除了这个问题不必要的部分。

tl;dr您的结果似乎正确;这里的变化比你们想象的要多(下注数字的变化比下注红色的变化大得多…)

您的模拟有很多方面可以简化,但我认为您的基本框架是正确的。实际上,您唯一缺少的是输出中预期的变化量;如果你检查一下,你会发现观察到的和预期的偏差其实并不令人惊讶。(实际上,你可以用解析的方法来计算这个方差,但在这里,我将用蛮力来计算。)

模拟100次跑步,每次10万场比赛。为了方便起见,我使用了
plyr::raply()
(它会自动组合结果并实现一个进度条),但您也可以使用
replicate()
,或者使用
for
循环来完成

set.seed(101)
library(plyr)
rr <- raply(100,simulation(BettingOnNumber,100000),.progress="text")
这意味着您将获得预期和观察到的偏差程度,即您在21%的时间内看到的偏差,或更多偏差(这基本上是您的结果的一个频率p值)


用红色策略下注试试这个实验,你会发现方差要小得多…

非常感谢你的解释!
set.seed(101)
library(plyr)
rr <- raply(100,simulation(BettingOnNumber,100000),.progress="text")
par(las=1,bty="l")
hist(rr[,1],col="gray",breaks=30,
     xlab="mean amount won in 100,000 games",
     ylab="Frequency (100 runs)")
exp_val <- -0.02703
obs_val <- -0.04852
abline(v=c(obs_val,exp_val),col=c("red","blue"),lwd=2)
mean(abs(rr[,1]-exp_val)>abs(obs_val-exp_val)) ## 0.21