def evaluate_sampler( sampler_fn, obs, action ):
    """
    :param sampler_fn:
        fn(o,k)     Function returning sample value
        [p1,p2..]   List of values per-arm
        p1          Scalar value for all arms

    :param obs:
    :param action:
    :return:
    """
    if callable(sampler_fn):
        sample = sampler_fn(obs, action)
    elif type(sampler_fn) == list:
        sample = sampler_fn[action]
    else:
        sample = sampler_fn  # assume float or int
    return sample