How about having __iter__ return a generator comprehension, e.g., (random.uniform(0,1,self.num_parameters) for i in range(self.num_samples)) instead of self?  We could get rid of the next() function and self.num and it would make it a little safer just in case someone tried to iterate over a Uniform object in multiple loops at the same time (I know, not likely, but still...)