LINUX.ORG.RU

История изменений

Исправление Virtuos86, (текущая версия) :

Поскольку в условиях задачи не указано, нужно ли стремиться к наиболее равномерному распределению длин отрезков по диапазону, то вот решение в лоб:

from random import choice

length = 1000
min_length = 1
max_length = 30
n = 120
list_of_lengths = []

sum_lengths = 0
while n > 0:
    n -= 1
    l = choice(xrange(min_length, max_length + 1))
    sum_lengths += l
    list_of_lengths.append(l)
    remainder = length - sum_lengths - (n - 1)
    if remainder < max_length:
        max_length = remainder

print list_of_lengths
Примерно половина длин будет минимальной.

Исправление Virtuos86, :

Поскольку в условиях задачи не указано, нужно ли стремиться к наиболее равномерному распределению длин отрезков по диапазону, то вот решение в лоб:

from random import choice

length = 1000
min_length = 1
max_length = 30
n = 120
list_of_lengths = []

sum_lengths = 0
while n > 0:
    n -= 1
    l = choice(xrange(min_length, max_length + 1))
    sum_lengths += l
    list_of_lengths.append(l)
    remainder = length - sum_lengths - (n - 1)
    if 0 < remainder < max_length:
        max_length = remainder
    elif remainder == 0:
        for i in xrange(n):
            list_of_lengths.append(min_length)
        break

print list_of_lengths
Примерно половина длин будет минимальной.

Исходная версия Virtuos86, :

Поскольку в условиях задачи не указано, нужно ли стремиться к наиболее равномерному распределению длин отрезков по диапазону, то вот решение в лоб:

from random import choice

length = 1000
min_length = 1
max_length = 30
n = 120
list_of_lengths = []

sum_lengths = 0
while n > 0:
    n -= 1
    l = choice(xrange(min_length, max_length + 1))
    sum_lengths += l
    list_of_lengths.append(l)
    remainder = length - sum_lengths - (n - 1)
    if 0 < remainder < max_length:
        max_length = remainder
    elif remainder == 0:
        for i in xrange(n):
            list_of_lengths.append(1)
        break

print list_of_lengths
Примерно половина длин будет минимальной.