I am trying to recreate np.random.randn() for entertainment without using numpy library.
The function np.random.randn() could accept arbitrary number of arguments specifying length of each dimension. For example, np.random.randn(2, 3, 4) creates a 2 * 3 * 4 matrix where each entry is of standard normal distribution.
I have completed the following but get stuck in assigning each entry value (the line enclosed by #####...)
import random
from itertools import product
def getStandardNormalTensor(*dimList):
# create empty list
lst = 0
for dim in dimList: lst = [lst] * dim
# populate list with N(0, 1) number
for idx in product(*[list(range(dim)) for dim in dimList]):
#######################################
lst[idx] = random.gauss(0, 1)
#######################################
return lst
where obviously lst does not accept indexing like lst[(1, 2, 3)] but only lst[1][2][3].
The difficulty I am having now is that I could not get indexing to work as I do not know how many dimensions are there in dimList (i.e. the length of dimList).
Could someone help me? Thank you in advance!