Как вы получаете все комбинации из n чисел, кратных 10 и чья сумма равна 100? - PullRequest
0 голосов
/ 20 апреля 2020

Цель состоит в том, чтобы получить списки рассылки, которые позволяют, например, протестировать сценарий ios путем взвешивания переменных с различными знакомыми весами, сумма которых равна 100 (и, следовательно, ассимилируется в процентах).

метод, который я предлагаю ниже, работает, но не может быть лучшим. Не стесняйтесь предлагать какие-либо улучшения.

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Функция для целочисленных композиций на n частей:

def comppercents(n):
    y = [0] * n
    y[0]  = 100
    while True:
        yield(y)
        v = y[-1]
        if (100 ==v ):
            break
        y[-1] = 0
        j = -2
        while (0==y[j]):
            j -= 1
        y[j] -= 10
        y[j+1] = 10 + v

for x in comppercents(3):
    print(x)


[100, 0, 0]
[90, 10, 0]
[90, 0, 10]
[80, 20, 0]
...
[0, 20, 80]
[0, 10, 90]
[0, 0, 100]

(66 вариантов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...