Посмотрите на фрагмент кода ниже:
import random
def addrandom(lst, n):
for _ in range(n):
lst[random.choice(range(len(lst)))] += 1
return lst
looplength = 20
inputlist = [0, 0, 0, 0, 0]
res = addrandom(inputlist, looplength)
, который производит:
print(res) # -> [5, 3, 3, 6, 3]
Как видно из этого прогона, он действительно приводит к списку, элементы которого составляют до looplength
(5 + 3 + 3 + 6 + 3 = 20)
Ваш код немного неортодоксален по моему скромному мнению.
Вместо вызова функции в каждом цикле, почему бы не иметь цикл внутри функции?
Во-вторых, не возвращая ничего, что вы рассчитываете на то, что список будет изменен на месте, что только добавляет путаницы читателю.