import random


def varier(base, variable, min=1, max=None):
    """Retourne un entier varié de base + ou - variable.
    
    min et max permettent de définir la marge minimum et maximum dans
    laquelle peut se trouver la valeur ede retour.
    
    Par exemple :
        varier(15, 5) retourne un nombre entre 10 et 20
        varier(25, 30, min=1) retourne un entier entre 1 et 55
    
    Note : si une des bornes min ou max est à None, la valeur de retour ne
    sera pas limitée sur cette borne. La valeur de min étant de 1 par défaut,
    cela signifie que l'appel à la fonction varier ne retournera que des
    entiers par défaut. Pour modifier ce comportement, passez None à
    l'argument min.
    
    """
    r_min = base - variable
    r_max = base + variable
    if min is not None:
        r_min = min if min > r_min else r_min
    if max is not None:
        r_max = max if max < r_max else r_max
    
    return random.randint(r_min, r_max)