我很好奇在数学上解决乐透需要什么。只是为了好玩。
所以我决定弄清楚如果我想赢得下周的乐透,我需要买多少张彩票。
我的目标是创造每一张可能的票
我写了一个小程序,它可以生成所有可能的 Lotto Ticket。工作正常,但它有两个我不知道如何解决的问题:
每次我使用较大的值或较大的范围(例如 6*49)时,应用程序会冻结数小时计算,最终应用程序崩溃。但是,如果我尝试计算小的值和范围,例如所有可能的 3*5 LOTTO 彩票,该程序运行良好没有崩溃(3*5== 表示 .... 数字数量*最大数字)
问题二是:我不知道如何让程序停止。我有一些最终结果,但我无法弄清楚得到最终结果的方程式或使(WHILE LOOP STOP)程序停止工作。目前我只是设置它,如果它产生一百万张重复票。没有更多可能的门票了,现在退出。
我从实验中得到的结果是:
3*3=1
3*4=4
3*5=10 ( ie 10 maximum possible tickets)
3*6=20
3*7=35
3*8=56
或者如果我使用 4s
4*4=1
4*5=5
4*6=15
4*7=35
4*8=70
或者如果我使用 6s
6*6=1
6*7=7
6*8=28
6*9=84
有一个网站可以很容易地计算它,但我不知道方程是什么:
http://www.lotterynumberspro.com/lottery-odds-calculator.php
到目前为止我的代码
//******************************Start Values*******************************************************************************
NSMutableArray*starArray=[[NSMutableArray alloc]initWithCapacity:Rangesize];
NSMutableSet *aSet;
int x;
for (x=1; x<=Rangesize; x++) {[starArray addObject:@(x)] ;}
NSMutableArray*allStartValues=[[NSMutableArray alloc]initWithArray:starArray];
NSLog(@"First ticket = %@",[allStartValues componentsJoinedByString:@"_"]);
//***************************Master Array with one object*****************
NSMutableArray*masterArray=[[NSMutableArray alloc]initWithObjects:allStartValues, nil];
NSLog(@"The masterArray initialized = %@",[masterArray componentsJoinedByString:@"_"]);
//****************************************Search Master for instances of new ticket*************
int count=0;
NSMutableString *string = [NSMutableString string];
while ([masterArray containsObject:allStartValues]&& count<=100000) {
NSMutableSet *aSet2=[[NSMutableSet alloc]initWithCapacity:Rangesize];
while(([aSet2 count]!=Rangesize))
{
int Randnum = (arc4random() % BnSize)+1;
[aSet2 addObject:[NSNumber numberWithInt:Randnum]];
}
NSArray *arrayOfUniqueRandomNumbers = [aSet2 allObjects];
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: YES];
NSArray*new=[arrayOfUniqueRandomNumbers sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
for(NSArray*EachElement in masterArray)
{
if ([masterArray containsObject:new]) {
count++;
break;
}
else {
NSLog(@"ticket %@ Pass to add to Master",[new componentsJoinedByString:@"_"]);
[masterArray addObject:new];
// NSLog(@"The masterArray updated = %@",[masterArray componentsJoinedByString:@"_"]);
break;
}
}
}
int c=1;
for (NSArray*element in masterArray) {
[string appendString:[NSString stringWithFormat:@"Ticket (%i) is >> %@ \n",c ,[element componentsJoinedByString:@"_"]]];
_Scroll.text=string;
c++;
//NSLog(@"array size = %i",[masterArray count]);
}
}
@end
任何人都知道如何使这个程序更好?