做食品的网站设计要注意,网站建设收费标准报价,营销推广内容,常州承接网站建设随机数在计算机科学领域扮演着重要的角色#xff0c;用于模拟真实世界的随机性、数据生成、密码学等多个领域。Python 中的 random 模块提供了丰富的随机数生成功能#xff0c;本文整理了 random 模块的使用。 文章目录 Python random 模块注意事项Python random 模块的内置…随机数在计算机科学领域扮演着重要的角色用于模拟真实世界的随机性、数据生成、密码学等多个领域。Python 中的 random 模块提供了丰富的随机数生成功能本文整理了 random 模块的使用。 文章目录 Python random 模块注意事项Python random 模块的内置函数randint()randrange()random()uniform()gauss(mu, sigma)sample()choice(sequence)shuffle(sequence)seed(aNone) Python random 模块
注意事项 伪随机性Python 使用 random 模块生成各种分布的伪随机数。计算机生成的随机数都是伪随机数它们是由确定性算法生成的只是看起来像随机。如果需要高度的随机性需要额外的随机源。 不同类型的随机性在模拟、密码学等场景中需要注意不同类型的随机性需求。如果前往 Python 文档以获取此模块的文档将会看到一条警告 显然random 模块只适用于一般的随机数需求。random 模块使用 Mersenne Twister 算法来生成随机数。但是这种算法是完全确定性的而对于密码学等需要高强度随机性的场景应该使用 secrets 模块。
Python random 模块的内置函数
下面是 random 模块下的各种内置函数。这些函数能够在不同场景下生成伪随机数 下面的列表包含了上述随机数生成函数的简要说明
函数名描述randint(a, b)生成一个位于 [a, b] 范围内的随机整数randrange(start, stop, step)生成一个以 step 递增的整数序列中的随机元素random()生成一个位于 [0.0, 1.0) 范围内的随机浮点数uniform(a, b)生成一个位于 [a, b) 范围内的随机浮点数gauss(mu, sigma)生成一个符合高斯分布的随机浮点数均值为 mu标准差为 sigmasample(population, k)从 population 序列中随机选择 k 个元素不重复choice(sequence)从序列中随机选择一个元素shuffle(sequence)随机打乱序列中的元素顺序seed(aNone)初始化随机数生成器的种子用于重现随机序列
下面是这些函数的更详细介绍及示例。
randint()
此函数生成指定范围之间的整数。它接受两个参数 x x x 和 y y y 并生成整数 i i i使得 x i y x i y xiy。
import randoma random.randint(3, 6)
print(a) # 输出3randrange()
该函数生成一个以 step 为步长的整数序列中的随机元素。start 和 stop 是范围取值范围是 [start, stop)。若省略 step 参数默认为 1。
import randoma random.randrange(1, 10, 2)
print(a) # 输出7random()
该函数生成一个位于 [0.0, 1.0) 范围内的随机浮点数。所有数字在这个范围内的概率是相等的。
import randoma random.random()
print(a) # 输出0.6427979778735594uniform()
该函数生成一个位于 [a, b) 范围内的随机浮点数。类似于random()但可以指定范围。
import randoma random.uniform(3, 6)
print(a) # 输出3.512451152441262gauss(mu, sigma)
该函数生成一个符合高斯分布也称为正态分布的随机浮点数。mu 是均值sigma 是标准差控制分布的形状。
import randoma random.gauss(3, 0.5)
print(a) # 输出2.9743970359818612sample()
如果想要一个序列中的多个随机元素可以使用 sample()。它需要两个参数 population 和 k其中 population 是一个序列k 是一个整数。然后该函数从 population 序列中随机选择 k 个元素并以列表形式返回。选择不重复。
import randomseq (12, 33, 67, 55, 78, 90, 34, 67, 88)
a random.sample(seq, 5)
print(a) # 输出[88, 78, 67, 34, 33]choice(sequence)
如果要从特定序列中选择随机元素可以使用此函数。它需要一个参数——sequence。它从序列中返回一个随机元素。
import randomseq (12, 33, 67, 55, 78, 90, 34, 67, 88)
a random.choice(seq)
print(a) # 输出88注意random.choice(seq) 不等同于 random.sample(seq, 1)前者返回元素后者返回列表。 shuffle(sequence)
此函数采用一个参数 —— 列表。然后它会将列表的元素打乱并返回。
import randoma [10, 20, 30, 40, 50]
random.shuffle(a)
print(a) # 输出[30, 10, 20, 40, 50]seed(aNone)
当需要多次生成相同的随机数序列时可以使用此函数。它需要一个参数 —— 种子值。此值初始化伪随机数生成器。每当使用相同的种子值调用 seed() 函数时它都会产生完全相同的随机数序列这对于需要重现随机结果的情况很有用。
import random
# seed value 3
random.seed(3)
for i in range(3):print(random.random(), end )print(\n)# seed value 8
random.seed(8)
for i in range(3):print(random.random(), end )print(\n)# seed value again 3
random.seed(3)
for i in range(3):print(random.random(), end )print(\n)输出 0.23796462709189137 0.5442292252959519 0.36995516654807925 0.2267058593810488 0.9622950358343828 0.12633089865085956 0.23796462709189137 0.5442292252959519 0.36995516654807925 可以看出对于种子 3每次都会生成相同的序列。