iOS小乐子之买多少注彩票才能中超级大乐透头奖

GitHub地址:https://github.com/runThor/HTLottery

实现:

    // 大乐透的玩法:前区号码范围1-35,随机选取5个不重复的数;后区号码范围1-12,随机选取2个不重复的数,头奖即所有号码完全一致
    // 假定当期头奖结果
    NSArray *f = @[@(5), @(10), @(18), @(25), @(33)];  // 前区号码
    NSArray *b = @[@(3), @(12)];  // 后区号码
    
    int r = 0;  // 一致的号码个数,r == 7时代表全中
    NSMutableArray *frontResult = [[NSMutableArray alloc] init];
    NSMutableArray *backResult = [[NSMutableArray alloc] init];
    int count = 0;  // 需要购买的彩票注数
    
    do {        
        [frontResult removeAllObjects];
        [backResult removeAllObjects];
        
        // 得出前区号码
        for (int i = 0; i < 5; i++) {
            int a;
            
            do {
                a = 1 + arc4random()%35;
            } while ([frontResult containsObject:@(a)]);
            
            [frontResult addObject:@(a)];
        }
        
        // 得出后区号码
        for (int i = 0; i < 2; i++) {
            int b;
            
            do {
                b = 1 + arc4random()%12;
            } while ([backResult containsObject:@(b)]);
            
            [backResult addObject:@(b)];
        }
        
        r = 0;
        
        for (id a in frontResult) {
            if ([f containsObject:a]) {
                r++;
            }
        }
        
        for (id bb in backResult) {
            if ([b containsObject:bb]) {
                r++;
            }
        }

        count++;
    } while (r != 7);
    
    NSLog(@"%d  %@%@", count, frontResult, backResult);

经过多次测试,结果大致在几百万到几千万之间,最少的一次是四百多万,最多的一次七千多万,注意这个结果是彩票的注数,可能有部分彩票的号码组合是相同的。

我记得概率上计算出的中头奖概率为两千多万分之一,就是说所有不重复的号码组合一共有两千多万种,只能说,彩票小买娱乐就好,下重注那就是赌博。

这只是一个小娱乐,计算方式未必科学,如果哪位大神发现问题或者有更好的计算方式,欢迎评论交流~


猜你喜欢

转载自blog.csdn.net/zzyeeaa/article/details/78248822
今日推荐