Is there an efficient algorithm to split up a number into N subsections so that the sum of the numbers adds up to the original, with a base minimum? For example, if
import random
def split_given_number_into_n_random_numbers(number, number_of_subsections, min_random_number_desired = 0):
cumulative_sum_of_random_numbers = 0
current_subsection = 1
max_random_number = int(number/number_of_subsections)
if min_random_number_desired > max_random_number:
print("ERROR: Cannot have min number as {} and split {} in {} subsections".format(min_random_number_desired,
number, number_of_subsections))
return False
while (True):
random_number = random.randint(min_random_number_desired, max_random_number)
print("Random number {} = {}".format(current_subsection, random_number))
cumulative_sum_of_random_numbers += random_number
# print("Cumulative sum {}".format(sum_of_num))
number -= random_number
current_subsection += 1
if current_subsection == number_of_subsections:
random_number = number
print("Random number {} = {}".format(current_subsection, random_number))
cumulative_sum_of_random_numbers += random_number
break
print("Final cumulative sum of random numbers = {}".format(cumulative_sum_of_random_numbers))
return True
if __name__ == '__main__':
split_given_number_into_n_random_numbers(50, 7, 2)
Now if you want minimum number to be something else besides 2, change it to any value provided number_of_subsections * min_random_number_desired <= number.