在Python中生成和使用数百万随机数的有效方法

Fom*_*ite 13 python random

我正在编写一个编程项目的过程,该项目涉及Python中一些非常广泛的蒙特卡罗模拟,因此产生了大量的随机数.几乎所有这些(如果不是全部的话)都可以通过Python的内置随机模块生成.

我是一个编码新手,并且不熟悉高效和低效的做事方式.生成say,所有随机数作为列表,然后遍历该列表,或者每次调用一个函数时生成一个新的随机数,这将是一个非常大的循环?

或者其他一些,无疑是更聪明的方法?

ros*_*dia 5

每次生成一个随机数。由于循环的内部工作只关心单个随机数,因此在循环内生成并使用它。

例子:

# 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
Run Code Online (Sandbox Code Playgroud)

显然,实际上,这并不重要,除非您要处理数十亿次迭代,但如果您一次只使用一个数字,为​​什么还要费心生成所有这些数字呢?

  • 重要旁注:如果您生成数十亿个数字并将它们存储在列表中,您最终将耗尽内存。如果您按需生成这些数字,这不是问题。因此,对于大量数字,您**必须**在需要时生成它们。 (7认同)
  • 如果您只使用生成器而不是列表,则可以很好地执行“不要这样做”方法,即将“[random.randint..]”更改为“(random.randint..)”。 (2认同)