random 随机数模块
方法 | 说明 |
---|---|
random.random() | 生成一个0到1的随机符点数 |
random.uniform(a, b) | 生成一个指定范围内的随机浮点数 |
random.randint(a, b) | 生成一个指定范围内的随机整形数 |
random.randrange([start], stop[, step]) | 从一个按指定基数递增的序列中随机选取一个数 |
random.choice(sequence) | 从指定序列中随机获取一个元素 |
random.shuffle(x[, random]) | 打乱指定列表的元素 |
random.sample(sequence, k) | 从指定序列中随机获取指定长度的切片 |
random.random
描述: 生成一个范围在[0, 1]
的随机浮点数。
语法: random.random()
参数:
- 无
返回值: 返回一个 0 到 1 的随机符点数。
实例:
1
2
3
4
5
>>> import random
>>> random.random()
0.1456303839809635
>>> print("{:.2f}".format(random.random()))
0.76
random.uniform
描述: 生成一个指定范围[a, b]
内的随机符点数。
语法: random.uniform(a, b)
参数:
- a — 浮点数的下/上限
- b — 浮点数的上/下限
返回值: 返回一个指定范围[a, b]
内的随机符点数。
实例
1
2
3
4
5
6
7
8
9
10
11
12
>>> import random
>>> # a < b
>>> random.uniform(5, 8)
7.2870590618030935
>>> # a > b
>>> random.uniform(8, 5)
7.03271135071411
>>> # a == b
>>> random.uniform(5, 5)
5.0
>>> print("{:.2f}".format(random.uniform(5, 8)))
6.53
random.randint
描述: 生成一个指定范围[a, b]
内的随机整形数。
语法: random.randint(a, b)
参数:
- a — 整形数的下限
- b — 整形数的上限(b >= a,否则抛出异常)
返回值: 返回一个指定范围[a, b]
内的随机整形数。
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> import random
>>> # a < b
>>> random.randint(10, 20)
19
>>> # a == b
>>> random.randint(10, 10)
10
>>> # a > b 抛出异常
>>> random.randint(20, 10)
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
random.randint(20, 10)
File "C:\python37\lib\random.py", line 222, in randint
return self.randrange(a, b+1)
File "C:\python37\lib\random.py", line 200, in randrange
raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (20,11, -9)
random.randrange
描述: 根据步长在指定范围的整形数序列中获取一个随机元素。
语法: random.randrange([start], stop[, step])
参数:
- start — 序列的开始值,可选填。默认为0
- stop — 序列的结束值,必输项
- step — 步长,可选填。默认为1
返回值: 返回列表的一个随机元素。
实例:
1
2
3
4
5
6
7
8
9
10
>>> import random
>>> # 范围在 [1, 5) ,步长为2。即从序列 [1, 3] 中随机获取一个元素
>>> random.randrange(1, 5, 2)
3
>>> # 范围在 [1, 5) ,步长为1。即从序列 [1, 2, 3, 4] 中随机获取一个元素
>>> random.randrange(1, 5)
1
>>> # 范围在 [0, 5) ,步长为2。即从序列 [0, 1, 2, 3, 4] 中随机获取一个元素
>>> random.randrange(5)
2
random.choice
描述: 从序列中获取一个随机元素。
语法: random.choice(sequence)
参数:
- sequence — 序列
返回值: 返回序列的一个随机元素。
实例:
1
2
3
4
5
6
7
8
9
10
11
12
>>> import random
>>> # 获取列表的一个随机元素
>>> random.choice(["可爱的", "迷人的", "温柔的"])
'迷人的'
>>> random.choice(range(1, 10))
4
>>> # 获取字符串的一个随机字符
>>> random.choice("可爱的迷人的温柔的")
'人'
>>> # 获取元组的一个随机元素
>>> random.choice(("可爱的", "迷人的", "温柔的"))
'迷人的'
random.shuffle
描述: 将一个列表中的元素打乱,即改变原有的列表。
语法: random.shuffle(x[, random])
参数:
- x — 列表
返回值: 无。
实例:
1
2
3
4
5
>>> import random
>>> daily = [1, 2, 3, 4, 5]
>>> random.shuffle(daily)
>>> daily
[1, 3, 2, 5, 4]
random.sample
描述: 从指定序列中随机获取指定长度的切片,不会修改原有序列。
语法: random.sample(sequence, k)
参数:
- sequence — 序列
- k — 切片的长度
返回值: 返回一个新的随机的切片序列。
实例:
1
2
3
4
5
6
>>> import random
>>> daily = [1, 2, 3, 4, 5]
>>> random.sample(daily, 3)
[4, 2, 3]
>>> daily
[1, 2, 3, 4, 5]
应用场景
随机整数
1
2
3
>>> import random
>>> random.randint(0,99)
21
随机选取0到100间的偶数
1
2
3
>>> import random
>>> random.randrange(0, 101, 2)
42
随机浮点数
1
2
3
4
5
>>> import random
>>> random.random()
0.85415370477785668
>>> random.uniform(1, 10)
5.4221167969800881
随机字符
1
2
3
>>> import random
>>> random.choice('abcdefg&#%^\*f')
'd'
多个字符中选取特定数量的随机字符
1
2
3
>>> import random
>>> random.sample('abcdefghij', 3)
['a', 'd', 'b'\]
多个字符中选取特定数量的随机字符组成新字符串
1
2
3
4
>>> import random
>>> import string
>>> string.join( random.sample(\['a','b','c','d','e','f','g','h','i','j'\], 3) ).replace(" ","")
'fih'
随机选取字符串
1
2
3
>>> import random
>>> random.choice ( \['apple', 'pear', 'peach', 'orange', 'lemon'\] )
'lemon'
洗牌
1
2
3
4
5
>>> import random
>>> items = \[1, 2, 3, 4, 5, 6\]
>>> random.shuffle(items)
>>> items
[3, 2, 5, 6, 4, 1\]