Notebook on nbviewer (original) (raw)

USA_table = [
(0, 10, 7.63), (10, 20, 19.20), (20, 30, 30.50), (30, 40, 41.08), (40, 50, 49.95), (50, 60, 57.73), (60, 70, 64.56), (70, 80, 70.39), (80, 90, 75.02), (90, 100, 79.02), (100, 110, 82.57), (110, 120, 85.29), (120, 130, 87.60), (130, 140, 89.36), (140, 150, 90.95), (150, 160, 92.52), (160, 170, 93.60), (170, 180, 94.55), (180, 190, 95.23), (190, 200, 95.80), (200, 250, 97.70), (250, 300, 100.0)]

def USA(): "Sample from the USA distribution." p = random.uniform(0, 100) for (lo, hi, cum_pct) in USA_table: if p <= cum_pct: return random.uniform(lo, hi)