I don't think I fully understand what you are trying to do in your longer piece of code, but if you want to generate your random samples one by one, you could use scipy.stats.norm
:
>>> import scipy.stats
>>> x = scipy.stats.norm(loc=30, scale=30/10) # loc is mean, scale is stdev
>>> x.rvs() # return a single random sample from distribution
30.0640285320252
>>> x.rvs()
29.773804986818252
>>> x.rvs(5) # returns an array of 5 random samples from distribution
array([ 31.46684871, 28.5463796 , 30.37591994, 30.50111085, 32.19189648])
>>> x.mean() # recover distribution parameters from x
30.0
>>> x.std()
3.0