Я спросил это о математическом переполнении и использовал комментарии, чтобы уточнить / преувеличить мой вопрос.Я надеюсь, что он имеет ожидаемый эффект и не выглядит как неприятный звук.
Я пытаюсь найти, какое подмножество чисел достигает известного среднего.
У меня есть список известных значений, отрицательных и возможных десятичных знаков.Они выглядят примерно так {-.32, -. 64, -. 12, .08, -. 54, -. 43, ...}
В некоторых случаях это около 50 цифр, хотя эта проблемабудет проверяться и в других случаях.
Набор в основном содержит отрицательные десятичные числа, в то время как в редких случаях имеет несколько положительных десятичных знаков - он никогда не имеет целых чисел.
У меня также естьизвестное значение, которое, как я знаю, является средним для некоторого подмножества приведенного выше списка.
Известное значение аналогично -.03.
Я не уверен в используемом механизме группировки, но, похоже, достиг переполнения стека, пытаясь решить эту проблему, когда не группировался.
Я попробовал несколько способов решить эту проблему.Я использую Python 3.6 и импортировал numpy как np.
Мне интересно, есть ли здесь код "subset-avg", который я адаптировал из другого решения для суммы subset (я буду отдавать должное, когдая снова могу найти этот вопрос) это не самый эффективный способ / если есть какая-то огромная ошибка в моей попытке решить эту проблему, которую я не видел.
Заранее спасибо за любые мысли.
def subset_avg(numbers, target, partial=[],depth=1):
# create AVG function
# set average of partial
a = np.mean(partial)
# check if the partial sum is equals to target
if a != target:
print("Currently Testing the Following Subset's " " " + "Average(%s) = %s\n\n" % (partial, round(a,2)))
print(depth)
if a == target or round(a,2) == target:
print('\n\n')
print("************")
print("************")
print('\n\n')
print("Found Subset AVG " + "Average(%s) = %s" % (partial, target))
print('\n\n')
print("************")
print("************")
print('\n\n')
print(depth)
# for each number in range of list
for i in range(len(numbers)):
# set n = current iteration in list
n = numbers[i]
# remaining values is current iteration + 1 through end of list
remaining = numbers[i+1:]
# calculate mean of partial, set partial = partial plus n
subset_avg(remaining, target, partial + [n],depth+1)
# Example of use
x = [-.32,-.64,-.12,.08,-.54,-.43]
subset_avg(x,-.03)