我正在从事涉及Python的相当广泛的蒙特卡洛模拟的编程项目的工作,因此就产生了大量随机数。几乎所有的人,即使不是全部,都将能够由Python的内置随机模块生成。
我是一个编码新手,不熟悉高效的方法。将所有随机数作为一个列表生成,然后遍历该列表,或者每次调用一个函数时都会生成一个新的随机数,这会非常大吗?
还是其他一些无疑更聪明的方法?
每次生成一个随机数。由于循环的内部工作原理只关心单个随机数,因此请在循环内部生成并使用它。
例:
# do this: import random for x in xrange(SOMEVERYLARGENUMBER): n = random.randint(1,1000) # whatever your range of random numbers is # Do stuff with n # don't do this: import random # This list comprehension generates random numbers in a list numbers = [random.randint(1,1000) for x in xrange(SOMEVERYLARGENUMBER)] for n in numbers: # Do stuff with n
显然,从实际意义上讲,这并不重要,除非您要处理数十亿次迭代,但是如果您一次只使用一个,为什么还要麻烦生成所有这些数字呢?