【吐血整理】Python 常用模块(一):random模块

博主发现当我们自己不知道 Python 某个模块的用法时,自己又没有相关笔记什么的,一般人很少去官网进行查阅,然后在网上乱找一通,描述的也不详细,非常地浪费时间,故博主决定自己将常用模块中常用的方法进行总结,以便后期自己查阅和网上的朋友们查找学习。今天开始总结我们的第一个常用模块:random 模块。

random 模块用于实现各种分布的伪随机数生成器,可以根据不同的实数分布来随机生成值,如随机生成指定范围的整数、浮点数、序列等。该模块中的多数函数都取决于 random()函数 ,该函数通过 Mersenne Twister 作为核心生成器在 [0.0, 1.0) 区间范围内均匀生成随机浮点数。

1. random 模块快用导航

在这里插入图片描述

2. choice() 方法 — 从非空序列中返回一个随机元素

choice() 方法用于从非空序列中返回一个随机元素。语法格式如下:

def choice(self, seq):
# 参数说明: seq: 表示需要随机抽取的序列。
# 返回值: 从非空序列中返回一个随机元素。

使用 choice() 方法在指定的序列中随机获取元素,代码如下:

import random  # 导入随机数模块

number_list = [6, 7, 8, 9, 10]  # 数值列表
str_tuple = ('5', '2', '0')  # 字符元组
print(f"列表随机元素为: {random.choice(number_list)}")
print(f"元组随机元素为: {random.choice(str_tuple)}")

程序运行结果如下:

在这里插入图片描述

3. choices() 方法 — 返回序列的随机元素

choices() 方法是 Python3.6 版本中新增的方法,是 choice() 方法的升级版。语法格式如下:

def choices(self, population, weights=None, *, cum_weights=None, k=1)
参数说明: population: 表示集群中随机抽取 K 个元素。
weights: 表示相对权重列表。
cum_weights: 表示累计权重,该参数与 weights 参数不能同时存在。
返回值: 返回序列的随机元素。

使用 choices() 方法获取指定序列中的随机元素,代码如下:

import random  # 导入随机数模块

print(random.choices(['Amo', 'Jerry', 'Ben']))  # 随机输出列表中的元素
print(random.choices(['Amo', 'Jerry', 'Ben'], k=2))  # 随机输出列表中的元素
# 比如 weights=[1,2,3,4,5], 那么第一个成员的概率就是P=1/(1+2+3+4+5)=1/15
print(random.choices(['Amo', 'Jerry', 'Ben', "Sam", "Paul"], weights=[0, 0, 0, 0, 1]))  # 随机输出列表中的元素

程序运行结果如下:

在这里插入图片描述

4. randint() 方法 — 获取指定范围的随机整数

randint() 方法用于获取指定范围的随机整数。语法格式如下:

def randint(self, a, b),参数说明如下:
a: 表示随机整数范围的起始值。
b: 表示随机整数范围的结束值,随机出现的整数包含 b 参数。
返回值: 返回指定范围的随机整数。

使用 randint() 方法获取指定范围的随机整数,代码如下:

import random  # 导入随机数模块

print(random.randint(0, 2))  # 打印随机整数

程序运行结果如下:

在这里插入图片描述

5. random() 方法 — 获取 0.0~1.0 范围内随机浮点数

random() 方法用于获取 0.0~1.0 范围内随机浮点数。语法格式如下:

def random(self) 参数说明:
返回值: 返回 0.0~1.0 之间的随机浮点数。

使用 random() 方法获取随机浮点数,代码如下:

import random  # 导入随机数模块

print(random.random())  # 打印0.0至1.0之间的随机浮点数

程序运行结果如下:

在这里插入图片描述

6. randrange() 方法 — 获取指定范围的随机整数

randrange() 方法用于获取指定范围的随机整数。语法格式如下:

def randrange(self, start, stop=None, step=1, _int=int),参数说明:
stop: 在没有指定 start 参数时表示 0 至 stop 之间的一个随机整数,其中不包含 stop 指定的值。
start: 表示随机范围的起始值。指定该参数后,stop 参数将作为随机范围的结束值。
step: 表示步长。
返回值: 返回指定范围的随机整数。

使用 randrange() 方法获取指定范围的随机整数,代码如下:

在这里插入图片描述
在获取第二个随机整数时,由于步长值为2,所以随机整数将在 1 和 3 之间随机出现。

7. sample() 方法 — 返回无重复随机数列表

sample() 方法用于从序列中随机抽取指定数量且不重复的元素所形成的新序列,可处理不可变序列。语法格式如下:

def sample(self, population, k) 参数说明:
population: 表示需要抽取的可变序列或不可变序列。
k: 表示抽取元素的个数。
返回值: 返回在指定序列中抽取指定数量且不重复元素所形成的新序列。

使用 sample() 方法从指定序列中随机抽取指定数量且不重复的元素形成的新序列,代码如下:

import random  # 导入随机数模块

number_list = [1, 2, 3, 4, 5]  # 数值列表
name_tuple = ("Amo", "Jerry", "Ben", "Jason", "Paul")  # 字符元组
print(f"随机抽取可变序列: {random.sample(number_list, 2)}")
print(f"随机抽取不可变序列: {random.sample(name_tuple, 3)}")

程序运行结果如下:

在这里插入图片描述

8. shuffle() 方法 — 将指定序列中的元素顺序随机排列

shuffle() 方法用于将指定序列中的元素顺序随机排列,只针对可变序列。语法格式如下:

def shuffle(self, x, random=None) 参数说明:
x: 表示需要随机排列元素的序列。
random: 可选参数,返回 [0.0,1.0)中的随机浮点数,默认情况下,该参数为 random() 方法

使用 shuffle() 方法将指定序列中的元素顺序随机排列,代码如下:

import random  # 导入随机数模块

number_list = [1,2,3,4,5,6]  # 数值列表
print(f"原列表顺序为: {number_list}")
random.shuffle(number_list)  # 将列表元素随机排列
print(f"随机排列后的列表: {number_list}")

程序运行结果如下:

在这里插入图片描述

9. uniform() 方法 — 获取指定范围之间的随机浮点数

uniform() 方法用于获取指定范围之间的随机浮点数。语法格式如下:

def uniform(self, a, b) 参数说明:
a: 表示指定随机范围的起始值,该值可能会出现在结果中。
b: 表示指定随机范围的结束值,该值可能会出现在结果中。
返回值: 返回一个 a~b 之间随机出现的浮点数。

使用 uniform() 方法获取指定范围之间的随机浮点数,代码如下:

import random  # 导入随机数模块

print(random.uniform(1.0, 5.0))  # 指定参数为浮点数
print(random.uniform(1, 5))  # 指定参数为整数
print(random.uniform(5.0, 1.0))  # 参数a大于参数b

程序运行结果如下:

在这里插入图片描述

10. seed() 方法 — 初始化随机数生成器

seed() 方法用于初始化随机数生成器,可以在调用其他方法之前使用,以实现随机相同的数值。语法格式如下:

def seed(self, a=None, version=2): 参数说明:
a: 表示需要指定的种子,如果未提供 a 或者 a=None,则使用系统时间作为种子。种子相同时即可随机生成相同的数值。
version: 默认值为2,如果参数 a 为整数将不计较参数 version 对应的值是否相同,如果参数 a 为字符类型,此时需要参数 version 对应的值相同。

使用 seed() 方法,通过设置相同的种子数随机生成相同数值,代码如下:

import random  # 导入随机数模块

random.seed()  # 默认种子
print(f"默认种子: {random.random()}")
random.seed()  # 默认种子2
print(f"默认种子2: {random.random()}")
random.seed(a=1)  # 整数种子
print(f"整数种子: {random.random()}")
random.seed(a=1)  # 整数种子2
print(f"整数种子2: {random.random()}")
random.seed(a='1', version=1)  # 字符种子
print(f"字符种子: {random.random()}")
random.seed(a='1', version=1)  # 字符种子2
print(f"字符种子2: {random.random()}")

程序运行结果如下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xw1680/article/details/110452335
今日推荐