计算彩票奖金

Calculating lottery winnings

我正在 运行进行基本的彩票模拟。在 1:50 之间随机选择 6 个号码 - 两次:(i) 彩票结果 (ii) 购买的彩票。每张票 2 美元。一个人每天都玩彩票,持续了 25 年(365*25)。门票类似于彩票。数字的顺序无关紧要。我重复这个长达 25 年的过程,共 50 次,并进行 3 次独立重复。换句话说,有 50 个人每天都在玩彩票,持续了 25 年。而且我要采集3次数据

gross_won<-matrix(NA,nrow=3,ncol=50); 
mean_prize<-matrix(NA,nrow=3,ncol=50); 
net_won<-matrix(NA,nrow=3,ncol=50)
for (k in 1:3) { 
  m<-vector()
  for (x in 1:50) { 
    for (i in 1:(365*25)) {
      res<-sample(1:50,6,replace=FALSE) 
      ticket<-sample(1:50,6,replace=FALSE) 
      m[i]<-length(intersect(res,ticket)) 
    }
  winnings<-c(0,0,0,50,200,150000,2000000,m)[match(m, c(0,1,2,3,4,5,6,m))] #Convert no. matches to money won
  gross_won[k,x]<-sum(winnings)
  mean_prize[k,x]<-mean(winnings) 
  net_won[k,x]<-gross_won[k,x]-(2*(365*25)) #Adjust for  ticket cost
  }
}
rowMeans(gross_won)
rowMeans(net_won)
rowMeans(mean_prize)

第 0,1,2,3,4,5,6 场比赛赢得的金额为:0,0,0,50,200,150000,2000000。

现在,当我 运行 这时 - 25 年的个人套数往往会产生大约 -9000 美元的净收益。但是,如果我 运行 它具有更高级别的迭代,我往往会赚钱。这可能正确也可能不正确。我知道经过足够多的迭代,低概率事件将会出现(即赢得 150k 或 2m),但我想问一下我是否在代码中犯了任何明显的错误,这些错误可能会产生意想不到的问题。

您的代码似乎比实际需要的要复杂得多。此函数模拟单张彩票赢或输的金额:

lottery <- function()
{
  c(0, 0, 0, 50, 200, 15e4, 2e6)[sum(sample(50, 6) %in% sample(50, 6)) + 1] - 2
}

并且此函数将对任意数量的彩票结果求和:

multi_lottery <- function(times) sum(replicate(times, lottery()))

所以我们可以像这样做 25 年的价值:

set.seed(69)
multi_lottery(25 * 365)
#> [1] -8950

这给了我们一个相当典型的结果。

但是,假设我们有 100 个人连续 25 年每天都去买彩票:

many_people <- replicate(100, multi_lottery(25 * 365))
many_people
#>   [1]  -6400  -9900 -10100 142050 -10400 142600  -9300  -9600  -8100
#>  [10]  -9000 141500  -9300  -9100  -9500  -7400  -9000  -9950  -9350
#>  [19]  -9000  -9800  -7700  -8900  -7650  -7800 141200 -10500  -9700
#>  [28]  -9000  -8650  -8750 141550  -9500 139550  -7650  -9350  -8800
#>  [37]  -9750  -9150  -8600  -8550  -8150  -9650 142350  -7850  -9000
#>  [46]  -9400 139700  -8850 139750 -10250  -8500 -10250  -9300  -9600
#>  [55]  -9750  -7900  -8600  -9550  -9700  -9650  -9450  -8600  -9800
#>  [64]  -8800 -10050  -9150  -8450  -9050  -9250  -8900  -9000  -9500
#>  [73]  -9200  -9100  -8650  -9400  -8600  -9600  -7800  -6650  -8750
#>  [82]  -9800 -10100 -10850 140200  -9000  -8450  -9700  -9100  -9450
#>  [91]  -8100  -8550  -9050  -8100  -8450  -8250  -8850  -7850 -10100
#> [100]  -9250

大多数人都是失败者 - 财富变化的中位数确实是 -9000,所以大多数时候你 运行 模拟你会得到这个值。

median(many_people)
#> [1] -9000

但是 平均值 因偶尔的大赢而大幅增加:

mean(many_people)
#> [1] 5985.5

所以在 25 年之后,每天有 100 人玩,净结果是 运行 中彩票的人净损失了 598,550 美元:

sum(many_people)
#> [1] 598550

这当然是分散在100 * 25 * 365张彩票上,所以平均彩票输

sum(many_people)/(100 * 25 * 365)
#> [1] 0.6559452

每张票大约 65 美分,长 运行。

顺便说一句,这仍然不足以解释非常偶然的大赢。为此,我们可以计算出数学期望值,因此如果您 运行 无限次开奖,这就是每张彩票的净变化。首先我们计算出每次抽奖匹配到0到6个球的概率:

p_0 <- (choose(6, 0) * choose(44, 6))/choose(50, 6)
p_1 <- (choose(6, 1) * choose(44, 5))/choose(50, 6)
p_2 <- (choose(6, 2) * choose(44, 4))/choose(50, 6)
p_3 <- (choose(6, 3) * choose(44, 3))/choose(50, 6)
p_4 <- (choose(6, 4) * choose(44, 2))/choose(50, 6)
p_5 <- (choose(6, 5) * choose(44, 1))/choose(50, 6)
p_6 <- (choose(6, 6) * choose(44, 0))/choose(50, 6)

如果我们的数学计算正确,概率总和应为 1:

p_0 + p_1 + p_2 + p_3 + p_4 + p_5 + p_6
#> [1] 1

现在我们将支出(减去固定票价)乘以概率。总和给出了我们的答案:

outcomes <- c(0, 0, 0, 50, 200, 15e4, 2e6) - 2
sum(outcomes * c(p_0, p_1, p_2, p_3, p_4, p_5, p_6))
#> [1] 1.629922

所以实际上,在 非常 长 运行 中,每售出一张彩票将损失 1.62 美元。