我正在为大学做一个项目,它模拟了一个6/49的乐透幸运游戏.
通过 Select 1到49之间的6个不同数字来创建票证. 我必须模拟10^6张彩票,并将其与幸运彩票进行比较. 我想找出一张随机彩票的6个数字和幸运彩票的6个数字相交的基数.但如果我为10^6张彩票做一次,那么拥有一张与幸运彩票完美匹配的彩票的概率很低.所以我试着用10^6张随机的新彩票做这个过程"nr_esantion"次,然后取平均值.
以下是我的批评:
nr_esantion<-30
es<-10^6
nr_49<-1:49
table_1 <- rep(0,7)
table_1
for(i in 1:nr_esantion)
{
lucky <- sample(nr_49,6,replace=FALSE)
inters <- replicate(es,length(intersect(sample(nr_49,6,replace=FALSE),lucky)),simplify="array")
aux <- array(table(inters))
# There are situations in which at one step "i", there are no intersections of cardinal 5 or 6.
if(length(aux)==5)
{
aux <- c(aux,0,0)
}
else{
if(length(aux)==6)
{
aux <- c(aux,0)
}
}
table_1 <- table_1+aux
}
table_1 <- table_1/nr_esantion
我对我得到的结果很满意,但我的问题是,对于10^6美元的门票来说,一次迭代大约需要20秒.因此,对于总共30次迭代来说,大约需要10分钟.对于某些项目任务,我必须将"nr_esantion"更改为300.
我的问题是:有没有更快的方法来计算这些$10^6*300$的样本?