import numpy as np 
from scipy.special import erfinv


def uniform(sample, lo=-1, hi=1):
    return lo + (hi - lo) * sample

def normal(sample, avg=0.0, std=1.0):
    return avg + std * np.sqrt(2) * erfinv(2 * sample - 1)

def lognormal(sample, avg=0.0, std=1.0):
    return np.exp(normal(sample, avg, std))

def bernoulli(sample, p=0.5):
    return (sample > p)