R 计算彩票中奖金额

R 计算彩票中奖金额,r,montecarlo,R,Montecarlo,我正在运行一个基本的彩票模拟。在1:50之间随机选择6个数字-两次:(i)彩票结果(ii)购买的彩票。每张票2美元。一个人每天玩彩票,持续25年(365*25)。这张彩票被比作彩票。数字的顺序无关紧要。我重复这个长达25年的过程,50次,3次独立重复。换句话说,25年来每天有50人在玩彩票。我想收集3次数据 gross_won<-matrix(NA,nrow=3,ncol=50); mean_prize<-matrix(NA,nrow=3,ncol=50); net_won<

我正在运行一个基本的彩票模拟。在1:50之间随机选择6个数字-两次:(i)彩票结果(ii)购买的彩票。每张票2美元。一个人每天玩彩票,持续25年(365*25)。这张彩票被比作彩票。数字的顺序无关紧要。我重复这个长达25年的过程,50次,3次独立重复。换句话说,25年来每天有50人在玩彩票。我想收集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 $2 ticket cost
  }
}
rowMeans(gross_won)
rowMeans(net_won)
rowMeans(mean_prize)

gross_won您的代码似乎比需要的复杂得多。此函数模拟一张彩票的中奖金额或损失金额:

lottery <- function()
{
  c(0, 0, 0, 50, 200, 15e4, 2e6)[sum(sample(50, 6) %in% sample(50, 6)) + 1] - 2
}
这给了我们一个相当典型的结果

然而,假设我们有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
但偶尔的大胜大大增加了平均值:

mean(many_people)
#> [1] 5985.5
因此,25年后,每天有100人玩彩票,其净影响是彩票发行人净损失598550美元:

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)
现在我们用概率乘以支出(减去固定票价)。这个总数给了我们答案:

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]1.629922

因此,实际上,从长远来看,彩票每售出一张将损失1.62美元。

您的代码似乎比需要的复杂得多。此函数模拟一张彩票的中奖金额或损失金额:

lottery <- function()
{
  c(0, 0, 0, 50, 200, 15e4, 2e6)[sum(sample(50, 6) %in% sample(50, 6)) + 1] - 2
}
这给了我们一个相当典型的结果

然而,假设我们有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
但偶尔的大胜大大增加了平均值:

mean(many_people)
#> [1] 5985.5
因此,25年后,每天有100人玩彩票,其净影响是彩票发行人净损失598550美元:

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)
现在我们用概率乘以支出(减去固定票价)。这个总数给了我们答案:

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]1.629922

因此,实际上,从长远来看,彩票每售出一张将损失1.62美元。

在真正的彩票中,价值不一定要有序吗?@IanCampbell在欧洲-不。有序并不重要。我不知道美国/其他地方的情况。在任何情况下,我的假设是:号码是选择而不替换的,订单并不重要。我不确定我是否同意这一点。你是基于你在赚钱的事实而担心算法是错误的。然而,彩票的价格和支出由管理局进行微调,以便他们获得适当的利润。是的,但这完全是一个假设的彩票系统,没有必要进行微调。在我的特殊情况下,秩序并不重要。在真正的彩票中,价值不一定要有序吗?@IanCampbell在欧洲-不。秩序并不重要。我不知道美国/其他地方的情况。在任何情况下,我的假设是:号码是选择而不替换的,订单并不重要。我不确定我是否同意这一点。你是基于你在赚钱的事实而担心算法是错误的。然而,彩票的价格和支出由管理局进行微调,以便他们获得适当的利润。是的,但这完全是一个假设的彩票系统,没有必要进行微调。在我的特殊情况下,顺序并不重要。全面而精彩的回答。全面而精彩的回答。