Python中 random 的用法
生成随机数
random.random()
:生成一个0到1之间的随机实数
random.random()
函数生成的随机数是一个0到1之间的随机实数,包括0但不包括1。也就是说,返回值可能是0(闭区间)但不可能是1(开区间)。具体地说,随机数的取值范围为 [0, 1)
,即包含0但不包含1。
random.uniform(a, b)
:生成一个位于区间 [a, b]
内的随机实数
与 random.random()
函数不同,random.uniform(a, b)
函数生成的随机实数可能包含区间端点 a
和 b
。也就是说,返回值可能是 a
(闭区间)或 b
(闭区间),也可能是区间内的任何一个实数值。
random.randint(a, b)
:生成一个位于区间 [a, b]
内的随机整数
随机的整数可能包含区间端点 a
和 b
。也就是说,返回值可能是 a
(闭区间)或 b
(闭区间),也可能是区间内的任何一个整数值。
需要注意的是,每次运行 random
的函数都会生成一个不同的随机数。
随机挑选元素
random.choice(seq)
:随机挑选一个元素
random.choice(seq)
函数用于从非空序列 seq
中随机选择一个元素并返回。这个序列可以是一个列表、元组、字符串或其他序列类型。
import random
# 从列表中随机挑选一个元素
lst = [1, 2, 3, 4, 5, 6]
print(random.choice(lst))
random.choices(seq)
:随机挑选多个元素
random.choices(seq, k)
函数用于从序列 seq
中随机选择 k
个元素并返回一个列表。这个序列可以是一个列表、元组、字符串或其他序列类型。该函数允许重复选择元素,即可能选出的结果中包含重复的元素。
import random
my_list = [1, 2, 3, 4, 5, 6]
x = random.choices(my_list, k=3)
print(x)
运行上述代码可能会输出类似于 [2, 5, 5]
的结果,这是从 my_list
列表中随机选择的3个元素,其中元素 5
被选中了2次。
random.sample(seq, k)
:随机挑选多个不重复的元素
random.sample(seq, k)
函数用于从序列 seq
中随机选择 k
个不重复的元素并返回一个新的列表。这个序列可以是一个列表、元组、字符串或其他序列类型。
import random
lst = [1, 2, 3, 4, 5, 6]
# 从列表中随机挑选3个不重复的元素
print(random.sample(lst, 3))
随机打乱顺序
random.shuffle(seq)
:将序列中的元素随机排序
random.shuffle(seq)
函数用于将序列 seq
中的元素随机打乱顺序。这个序列可以是一个列表、元组或其他序列类型。例如,下面是一个使用 random.shuffle(seq)
函数将一个列表中的元素随机打乱顺序的示例代码:
import random
my_list = [1, 2, 3, 4, 5, 6]
random.shuffle(my_list)
print(my_list)
运行上述代码可能会输出类似于 [6, 1, 5, 2, 3, 4]
的结果,这是将 my_list
列表中的元素随机打乱顺序后的结果。
需要注意的是,random.shuffle(seq)
函数会直接修改原始序列 seq
,而不是返回一个新的序列。
初始化随机种子
random.seed(a=None)
:指定随机数生成器的种子
random.seed(a=None)
函数用于初始化随机数生成器的种子。如果没有给定参数 a
,则默认使用系统当前时间作为种子,这意味着每次程序运行时生成的随机数序列都是不同的。如果给定了一个固定的种子 a
,那么每次程序运行时生成的随机数序列都是相同的。
import random
random.seed(42) # 设置固定的种子
print(random.random()) # 输出 0.6394267984578837
print(random.randint(1, 10)) # 输出 1
print(random.uniform(0, 1)) # 输出 0.7415504997598329