R 计算彩票中奖金额
我正在运行一个基本的彩票模拟。在1:50之间随机选择6个数字-两次:(i)彩票结果(ii)购买的彩票。每张票2美元。一个人每天玩彩票,持续25年(365*25)。这张彩票被比作彩票。数字的顺序无关紧要。我重复这个长达25年的过程,50次,3次独立重复。换句话说,25年来每天有50人在玩彩票。我想收集3次数据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<
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在欧洲-不。秩序并不重要。我不知道美国/其他地方的情况。在任何情况下,我的假设是:号码是选择而不替换的,订单并不重要。我不确定我是否同意这一点。你是基于你在赚钱的事实而担心算法是错误的。然而,彩票的价格和支出由管理局进行微调,以便他们获得适当的利润。是的,但这完全是一个假设的彩票系统,没有必要进行微调。在我的特殊情况下,顺序并不重要。全面而精彩的回答。全面而精彩的回答。