I am to measure how long does it take for my function to represent C:
C in range (0, 100, 1)
with integers from a list which is given. There is my code:
import itertools
import time
def amount(c):
a = [1, 2, 5, 10, 20, 50]
dp = [[0 for _ in range(len(a))] for __ in range(c + 1)]
dp[0][0] = 1
for i in range(c):
for j in range(len(a)):
for k in range(j, len(a)):
if i + a[k] <= c:
dp[i + a[k]][k] += dp[i][j]
return sum(dp[c])
I decided to create a function which measures how long does one call of my function last:
def count_once(c):
start = time.perf_counter()
amount(c)
return time.perf_counter() - start
It's pretty easy. Now I would like to make 10 measurements for each C from 0 to 100 and then to count the average from those measurements for each C.
So the output should contain 100 numbers (each number would be the average).
I started with this:
for i in range(0, 101, 1):
count_once(i)
print(count_once(i))
But I have no idea how can I use that formula to calculate an average of 10 measurements for each C.
Why not:
You can easily change the first
range(100)
with any list/iterable ofC
values you want to test, and the 10s on the second line with the amount you want to average over.By the way to eliminate the timing overhead I would go about this a bit differently:
Then your outer loop becomes:
I would probably use more times than 10 (say 100 or 1000 at least).