专业编程基础技术教程

网站首页 > 基础教程 正文

Python 模块 Random

ccvgpt 2024-08-07 18:48:59 基础教程 8 ℃

Python 的 random 模块提供了不同类型的伪随机数生成器,基于Mersenne Twister算法,此算法是Makoto Matsumoto (松本)和Takuji Nishimura (西村)于1997年开发的。

生成随机数

Python 模块 Random


random() 方法从生成的序列中随机返回一个浮点数,范围是 0 <= n < 1.0

输出:

使用 for in 语法随机生成了5个随机数。随机数范围是 0 <= n < 1.0

使用 uniform() 函数可以生成指定范围的浮点数:

输出:

这个例子,使用 format() 函数格式化生成的浮点数,保留三位小数,宽度是4。

传入最小值(minimum)和最大值(maximum),uniform() 函数生成返回的值使用的公式(formula): min + (max - min) * random()

Seeding


random() 函数在一个很大的区间生成随机数,这样可以确保返回的值不容易重复。但是有时候,有可能需要使用同样的数据集进行计算,一种方法是首先生成一大批数据集保存起来,另一种方法使用 Python 提供的 seed() 函数,它会初始化一个默认的伪随机数发生器,每次生成的值都一样。

输出:

seed() 函数确定第一个随机数,因为生成随机数的公式是根据第一个值来确定的,那么确定了第一个值后,后续的随机数都是一致的。

保存状态


生成随机数的算法内部会有个状态,可以通过 getstate() 函数访问这个状态,如果你想根据一个初始值,持续的生成随机数,可以把获取到的状态保存起来,下次程序运行的时候,可以通过函数 setstate() 设置到上次的进度,急速生成之后的随机数。

状态值是一个元组类型,可以通过 pickle 模块的方法 dump() 序列化到一个文件中,下次程序运行的时候,可以直接调用 pickle.load() 方法加载。

生成整数 Integers


random() 方法返回的是一个浮点数,虽然可以再把结果转换成整数,还可以直接调用便利的方法 randint() 直接生成整数。randint(a, b) 生成的值的范围:a <= n <= b,相当于 randrange(a, b+1)

randrange() 方法可以在指定范围内生成随机数:

randrange(start, stop[, step]) 函数的前两个参数是起始值、结束值(返回结果不包括结束值)。 第三个参数 step 代表步进值,类似 range() 函数。

最近发表
标签列表