# Sampling from a discrete distriution
# copyright David Poole 2020
# This work is licensed under a Creative Commons
# Attribution-NonCommercial-ShareAlike 4.0 International License.
# See: http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en

import random

def sample(n, dist=[0.3, 0.4, 0.1, 0.2]):
    """return a probability based on n samples"""
    counts = [0]*len(dist)
    for j in range(n):
        rn = random.random()
        counts[ min(i for i in range(len(dist)) if rn < sum(dist[:i+1])) ] +=1
    return [s/n for s in counts]
