human
Complete this python program:
def argmaxrnd(a, random_seed=None):
assistant
#Here is the Python program you requested.

    """Find the index of the maximum value for a given 1-D numpy array.
    In case of multiple indices corresponding to the maximum value, the
    result is chosen randomly among those. The random number generator
    can be seeded by forwarding a seed value: see function \hash_dist\.
    Parameters
    a : ndarray
    The source array.
    random_seed : int
    RNG seed.
    Returns
    index : int
    Index of the maximum value.
    Raises
    ValueError : shape mismatch
    If \a\ has got more than 2 dimensions.
    Notes
    2-D arrays are also supported to avoid multiple RNG initialisation.
    An array of indices corresponding to the maximum value of each row
    is then returned.
    """
    if (a.ndim > 2):
        raise ValueError('argmaxrnd    only    accepts    arrays    of    up    to    2    dim')
    def rndc(x):
        return random.choice((x == bn.nanmax(x)).nonzero()[0])
    random = (np.random if (random_seed is None) else np.random.RandomState(random_seed))
    return (rndc(a) if (a.ndim == 1) else np.apply_along_axis(rndc, axis=1, arr=a))