File: test_sample.py

package info (click to toggle)
python-bitarray 3.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,288 kB
  • sloc: python: 11,456; ansic: 7,657; makefile: 73; sh: 6
file content (30 lines) | stat: -rw-r--r-- 934 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import unittest
from itertools import pairwise
from collections import Counter
from statistics import fmean
from random import sample


class RandomSampleTests(unittest.TestCase):

    def test_mean(self):
        # python sample.py 100_000 100 20 0 45.5 49.5 100
        M = 100_000  # number of trails
        N = 100      # population size
        K =  20      # sample size
        C = Counter()
        ranges = [0.0, 45.5, 49.5, 100.0]
        for _ in range(M):
            x = fmean(sample(range(N), K))
            for i, (x1, x2) in enumerate(pairwise(ranges)):
                if x1 <= x < x2:
                    C[i] += 1

        self.assertEqual(C.total(), M)
        self.assertTrue(abs(C[0] - 24_529) <=  1_361)  # p = 0.245291
        self.assertTrue(abs(C[1] - 25_471) <=  1_378)  # p = 0.254709
        self.assertTrue(abs(C[2] - 50_000) <=  1_581)  # p = 0.500000


if __name__ == '__main__':
    unittest.main()