def split(walker, number=2):
    """Split (AKA make multiple clones) of a single walker.

    Creates multiple new walkers that have the same state as the given
    walker with weight evenly divided between them.

    Parameters
    ----------
    walker : object implementing the Walker interface
        The walker to split/clone
    number : int
        The number of clones to make of the walker
         (Default value = 2)

    Returns
    -------
    cloned_walkers : list of objects implementing the Walker interface

    """
    # calculate the weight of all child walkers split uniformly
    split_prob = walker.weight / (number)
    # make the clones
    clones = []
    for i in range(number):
        clones.append(type(walker)(walker.state, split_prob))

    return clones