📜  python中的随机数(1)

📅  最后修改于: 2023-12-03 14:46:42.031000             🧑  作者: Mango

Python中的随机数

在Python中,生成随机数的常用模块是random。这个模块提供了生成各种随机数的函数和类,包括整数、浮点数、布尔值等。本文将介绍random模块的常用函数和类。

random模块的导入

要使用random模块中的函数和类,需要先导入这个模块:

import random
生成随机整数

可以使用random.randint(a, b)函数生成[a, b]之间的随机整数:

import random

x = random.randint(1, 10)
print(x)

输出结果:

5
生成随机浮点数

可以使用random.uniform(a, b)函数生成[a, b]之间的随机浮点数:

import random

x = random.uniform(0, 1)
print(x)

输出结果:

0.625737197530462
从序列中随机选择元素

可以使用random.choice(seq)函数从一个序列中随机选择一个元素:

import random

seq = ['apple', 'banana', 'orange']
x = random.choice(seq)
print(x)

输出结果:

orange
打乱序列

可以使用random.shuffle(seq)函数打乱一个序列中元素的顺序:

import random

seq = ['apple', 'banana', 'orange']
random.shuffle(seq)
print(seq)

输出结果:

['banana', 'apple', 'orange']
生成随机字符串

可以使用random.choices(population, weights=None, *, cum_weights=None, k=1)函数生成随机字符串。其中,population是备选字符集合,weights是备选字符的权重,cum_weights是备选字符的累计权重,k是要生成的字符串长度。

import random
import string

characters = string.ascii_letters + string.digits
password = ''.join(random.choices(characters, k=8))
print(password)

输出结果:

pCjRcrMX
生成随机种子

可以使用random.seed(a=None, version=2)函数生成随机数种子。a是给定的种子,如果不提供种子,则使用系统时间作为种子。version是种子的版本号。

import random

random.seed(42)  # 使用给定种子
print(random.random())

random.seed()  # 使用系统时间作为种子
print(random.random())

输出结果:

0.6394267984578837
0.3723230150207065
随机性与可重复性

使用random模块生成的随机数是伪随机数,因为它们实际上是依据某个确定的算法计算得到的。但是这个算法的设计非常复杂,使得生成的随机数表现得很接近真正的随机数。因此,我们可以把这些伪随机数看做是真正的随机数。

注意,生成的伪随机数是有可重复性的。也就是说,如果我们使用相同的种子,就能生成相同序列的随机数。这个特性在实验开发和调试中非常有用。

下面是一个例子:

import random

random.seed(42)
print(random.random())
print(random.random())

random.seed(42)
print(random.random())
print(random.random())

输出结果:

0.6394267984578837
0.025010755222666936
0.6394267984578837
0.025010755222666936

注意,第1行和第3行输出的数值是相等的,第2行和第4行输出的数值也是相等的。这是因为我们在第3行和第4行使用了相同的种子42。