Return a Stochastic subclass made from a particular distribution.

    :Parameters:
      name : string
        The name of the new class.
      jacobians : function
        The log-probability function.
      random : function
        The random function
      dtype : numpy dtype
        The dtype of values of instances.
      mv : boolean
        A flag indicating whether this class represents
        array-valued variables.

def deterministic_from_funcs(
        name, eval, jacobians={}, jacobian_formats={}, dtype=np.float, mv=False):
    """
    Return a Stochastic subclass made from a particular distribution.

    :Parameters:
      name : string
        The name of the new class.
      jacobians : function
        The log-probability function.
      random : function
        The random function
      dtype : numpy dtype
        The dtype of values of instances.
      mv : boolean
        A flag indicating whether this class represents
        array-valued variables.

    """

    (args, defaults) = get_signature(eval)
    parent_names = args[0:]
    try:
        parents_default = dict(zip(args[-len(defaults):], defaults))
    except TypeError:  # No parents at all.
        parents_default = {}

    # Build docstring from distribution
    docstr = name[0] + ' = ' + name + '('.join(parent_names) + ')\n\n'
    docstr += 'Deterministic variable with ' + name + \
        ' distribution.\nParents are: ' + ', '.join(parent_names) + '.\n\n'
    docstr += 'Docstring of evaluatio function:\n'
    docstr += eval.__doc__

    return new_deterministic_class(
        dtype, name, parent_names, parents_default, docstr, eval, jacobians, jacobian_formats)