Попробуйте и посмотрите, работает ли это (извините, если это не очень читабельно):
import random
def randIntWeight(min, max):
distanceFromMedian = random.uniform(0, (max - min) / 2.0)
return (max - min) / 2.0 + distanceFromMedian * (-1) ** (random.randrange(-1, 0))
Я все еще изучаю мою Теорию вероятностей, поэтому пожалуйста поправьте меня, если этоне прав.