Идея заключается в следующем:
- Весь диапазон чисел (от минимального до максимального значения) делится на случайное количество диапазонов, например, 7.
- Далее случайным образом определяется количество чисел, входящих в каждый диапазон.
- Числа генерируются, и переходим к следующему интервалу.
Проблема.
Количество чисел, входящих в диапазон, определяется как случайная доля от первоначального количества. Для следующего диапазона — как доля от остатка. В результате почти всегда начальные интервалы получаются более многочисленными.
import random
a = []
qty = 1000
minimum = 1
maximum = 100
qty_range = int(random.random() * 6) + 5 # количество диапазонов
size_qty = int((maximum - minimum + 1) / qty_range) # размер диапазона
x = qty
lower = minimum # нижняя граница диапазона
for i in range(qty_range-1):
n = int(x*random.random()) # количество элементов в текущем диапазоне
x = x - n # сколько элементов осталось для других диапазонов
upper = lower + size_qty - 1 # верхняя граница диапазона
for i in range(n):
b = int(random.random() * (upper - lower + 1)) + lower
a.append(b)
lower = upper + 1
for i in range(x): # для последнего диапазона
b = int(random.random() * (maximum - lower + 1)) + lower
a.append(b)
for i in a:
print(i, end=' ')