2.2.3 随机数

前文已经编写了若干使用Python的random模块的程序,但对于特定的应用程序,我们的代码常常使用特定惯用方法以提供所需的某种类型的随机性。例如,在1.4节中,我们学习了用于随机混排一个数组的代码。在1.6节中,我们学习了基于离散分布随机绘图的代码。

为了有效地重用实现这些惯用方法的代码,从现在开始,我们将使用stdrandom模块(程序2.2.3),该模块包含基于不同概率分布产生随机数的函数,以及一个生成数组混排的函数。模块中包含函数的API如表2-2-3所示。这些函数都是我们熟知的函数,所以API中的简单描述足以说明其用途。当然,如果要使用这些函数,客户端必须包含一个import语句。同时还必须使得stdrandom.py可为Python使用,解决方法是:将该文件放置在与客户端程序相同的目录下,或者使用操作系统的路径机制进行设置(具体请参见本节后的“问题和解答”)。

表2-2-3 stdrandom模块的API

通过收集所有这些使用random模块生成各种类型随机数的函数到一个文件(stdrandom.py),我们就可以把生成随机数的注意力集中在这个文件上(并复用该文件的代码),而不用在使用这些函数的每个程序间扩散代码。每个使用这些函数的程序比直接调用函数random.random()更为清晰,因为从stdrandom中选择不同函数的目的更明确。在某些情况下,实现的代码可用于其他应用程序,也可用于其他Python库。在实际应用中,也可使用这些实现(事实上,本书官网代码可能与程序2.2.3不同)。清晰地阐明自定义API可赋予我们修改实现的自由,且保证客户端代码无须修改。 ...

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.