Python学习之路(28)——random模块

时间:2022-06-07 22:23:27

Python中的random模块用于生成随机数。常用函数包括random()、uniform()、randint()、randrange()、shuffle()、choice()、sample()。

1、random.random()

用于生成一个0到1的随机浮点数:0 <= n < 1.0

>>> import random
>>> random.random()
0.33064653439208

  

2、random.randint(a, b)

用于生成一个指定范围[a, b]内的整数:a <= n <= b

>>> import random
>>> random.randint(10,20)
13

  

3、random.uniform(a, b)

用于生成一个指定范围内的随机浮点数,其中a、b均可作为上下限

>>> import random
>>> random.uniform(10, 20)
17.719276599740184
>>> random.uniform(20, 10)
10.071254980939422

  

4、random.randrange([start, ]stop[ ,step])

用于在指定范围内,按指定步长递增的集合中获取一个随机数。

>>> import random
>>>###获取[0, 10)内的随机偶数
>>> random.randrange(0, 10, 2)
0
>>>###获取[1, 11)内的随机奇数
>>> random.randrange(1, 11, 2)
7

  

5、random.choice([seq])

从序列[seq]中获取一个随机元素,[seq]可以是list、tuple、string。

>>> import random
>>> random.choice([1, 1, 2, 3, 5, 8, 13])
1
>>> random.choice((1, 1, 2, 3, 4, 8, 13))
1
>>> random.choice('I love Python!')
't'

  

6、random.shuffle(x[, random])

用于将一个列表中的元素打乱。

>>> import random
>>> lst = list(range(10))
>>> print(lst)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.shuffle(lst)
>>> print(random.shuffle(lst))
None
>>> lst
[6, 1, 5, 2, 0, 9, 4, 7, 3, 8]
>>> random.shuffle(lst)
>>> print(random.shuffle(lst))
None
>>> lst
[9, 8, 0, 3, 6, 7, 2, 4, 1, 5]

  

7、random.sample(seq, k)

从序列seq中随机获取指定长度的切片。sample(采样)函数不会修改原有序列。

>>> import random
>>> lst = list(range(10))
>>> print(lst)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.shuffle(lst)
>>> print(random.shuffle(lst))
None
>>> lst
[9, 8, 0, 3, 6, 7, 2, 4, 1, 5]
>>> slice = random.sample(lst, 5)
>>> slice
[4, 9, 8, 3, 1]
>>> lst
[9, 8, 0, 3, 6, 7, 2, 4, 1, 5]

  

总结:

>>> import random
>>> ###随机整数
>>> random.randint(0, 99)
13

>>> ###随机选取0到100之间的偶数
>>> random.randrange(0, 101, 2)
16

>>> ###随机浮点数
>>> random.random()
0.6890696735021785
>>> random.uniform(1, 10)
8.14760642097281

>>> ###随机字符
>>> random.choice('abcdefg&#%^*')
'^'

>>> ###多个字符中选择特定数量的字符
>>> random.sample('abcdefghijklmn', 5)
['d', 'b', 'c', 'j', 'k']

>>> ###随机选取字符串
>>> random.choice(['apple', 'huawei', 'vivo', 'oppo', 'xiaomi'])
'xiaomi'

>>> ###重新洗牌
>>> items = [1, 2, 3, 4, 5]
>>> random.shuffle(items)
>>> items
[3, 5, 2, 4, 1]

  

网站里的4位验证码生成:

import random
code = ''
### 每次循环生成一个随机字符,这里要求生成4位随机字符
for i in range(4):
a = random.randint(1,4)
if a == i:
temp = chr(random.randint(65,90)) #chr对应assci表,生成随机字母
else:
temp = random.randint(0,9)       #生成随机数字
code +=str(temp)
print(code)