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);

經過多次測試,結果大致在幾百萬到幾千萬之間,最少的一次是四百多萬,最多的一次七千多萬,注意這個結果是彩票的注數,可能有部分彩票的號碼組合是相同的。

我記得概率上計算出的中頭獎概率爲兩千多萬分之一,就是說所有不重複的號碼組合一共有兩千多萬種,只能說,彩票小買娛樂就好,下重注那就是賭博。

這只是一個小娛樂,計算方式未必科學,如果哪位大神發現問題或者有更好的計算方式,歡迎評論交流~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章