Если вы хотите действительно случайное нормальное распределение, вы не можете гарантировать, насколько далеко будут распространяться числа. Вы можете уменьшить вероятность выбросов, указав стандартное отклонение
>>> n = 3000000
>>> sigma5 = 1.0 / 1744278
>>> n * sigma5
1.7199093263803131 # Expect one values in 3 mil outside range at 5 stdev.
>>> sigma6 = 1.0 / 1 / 506800000
>>> sigma6 = 1.0 / 506800000
>>> n * sigma6
0.0059194948697711127 # Expect 0.005 values in 3 mil outside range at 6 stdev.
>>> sigma7 = 1.0 / 390600000000
>>> n * sigma7
7.6804915514592934e-06
Следовательно, в этом случае гарантируя, что стандартное отклонение составляет всего 1/6 или 1/7 от половины диапазона, вы получите разумную уверенность в том, что ваши данные не будут превышать диапазон.
>>> range = 60000 - 100
>>> spread = (range / 2) / 6 # Anything outside of the range will be six std. dev. from the mean
>>> mean = (60000 + 100) / 2
>>> a = numpy.random.normal(loc = mean, scale = spread, size = n)
>>> min(a)
6320.0238199673404
>>> max(a)
55044.015566089176
Конечно, вы все еще можете указывать значения, выходящие за пределы диапазона