Попытка сделать неравновероятный генератор случайных чисел на Python

Идея заключается в следующем:

  1. Весь диапазон чисел (от минимального до максимального значения) делится на случайное количество диапазонов, например, 7.
  2. Далее случайным образом определяется количество чисел, входящих в каждый диапазон.
  3. Числа генерируются, и переходим к следующему интервалу.

Проблема.

Количество чисел, входящих в диапазон, определяется как случайная доля от первоначального количества. Для следующего диапазона — как доля от остатка. В результате почти всегда начальные интервалы получаются более многочисленными.

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=' ')

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Python для начинающих
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x