Python 的 random
模块提供了一系列用于生成随机数的函数。这些函数可以用于生成随机整数、浮点数、选择随机元素等。以下是对 random
模块中常用函数的详细解释:
导入 random
模块: import random
random常用函数:
1.random.random():返回 0 与 1 之间的随机浮点数 N
import random
print(random.random())
>>0.4504418186287992 # 随机生成
2.random.uniform(a, b)
生成一个范围在 [a, b]
之间的随机浮点数。
print(random.uniform(50,100))
>> 70.54773148564546 # 50 - 100 之间的随机浮点数
3.random.randint(a, b)
生成一个范围在 [a, b]
之间的随机整数,包括两端点。
范围: a<=N<=b
#需要注意的是,a 和 b 的取值必须为整数,并且a 的值一定要小于 b 的值
print(random.randint(2,50)) # 生成一个随机整数N,范围是2<=N<=50
>>23
print(random.randint(20,10)) # 报错!!!a必须大于b
4.random.randrange(start, stop, step)
生成一个范围在 [start, stop)
之间、步长为 step
的随机整数。
如果 step
未指定,默认为 1。
print(random.randrange(1, 10, 2)) # 生成 1, 3, 5, 7, 9 中的一个
>> 3
5.random.choice(seq)
从非空序列 seq
中返回一个随机数。 seq
可以是列表、元组、字符串等。
str = random.choice("学习 python") #从这几个字符串中返回一个随机数
print(str)
>> 习 # 随机返回
print(random.choice(['apple', 'banana', 'cherry']))
>> banana
6.random.choices(population, weights=None, *, cum_weights=None, k=1, p=None)
从给定的序列 population
中进行有放回的随机抽样。这个函数允许你指定每个元素被选中的概率(通过 weights
或 p
参数),并可以一次抽取多个样本(通过 k
参数)。。
print(random.choices(['apple', 'banana', 'cherry'], weights=[1, 3, 2], k=3))
>>['apple', 'cherry', 'banana']
参数:
population:一个序列(如列表、元组或字符串),从中进行抽样。
weights(可选):一个与 population 中元素相对应的序列,指定每个元素被选中的相对权重。权重可以是整数或浮点数。如果未提供,则假定所有元素的权重相等。
cum_weights(可选):一个累积权重序列,其中每个元素是到当前位置为止的权重总和。如果提供了 cum_weights,则不能使用 weights 或 p。
k(可选):要抽取的样本数量。默认为 1。
p(可选):一个序列,直接指定每个元素被选中的概率。概率之和应为 1(或接近 1),且每个概率应为非负数。如果提供了 p,则不能使用 weights 或 cum_weights
7.random.sample(population, k)
从非空序列 population
中随机选择 k
个不重复的元素。
print(random.sample(['apple', 'banana', 'cherry', 'date'], 2))
# 从序列里随机选取两个不重复的元素
>>['banana', 'date']
举例: ### 随机生成数字字母的六位数
ran = ''
s = 'QWERTYUIOPLKJHGFDSAZXCVBNMqwertyuioplkjhgfdsazxcvbnm1234567890'
# 方式一:
for i in range (6):
index = random.randint(0,len(s)-1) //len()统计长度 随机生成0-总长度的数字作为索引
ran += s[index] //借助索引找到对应的字符赋值给ran,每循环一次加在后面,最终生成六位数
print(ran)
# 方式二:
for i in range (6):
str = random.choice(s) //.choice(s):直接从 s中返回一个随机数
ran += str
print(ran)
random注意事项:
random
模块生成的随机数是基于伪随机数生成算法的,因此它们并不是真正的随机。- 使用
random.seed()
可以确保每次运行程序时生成的随机数序列相同,这在调试和测试时非常有用。
通过了解和使用这些函数,你可以生成各种需要的随机数或进行随机选择。