随机数 random
Python 的标准函数“random”提供了产生随机数的方法,不论是随机整数、随机浮点数,或要从串列中随机取值,都能透过 random 标准函数来实现。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
random 常用方法
下方列出几种 random 模组常用的方法 ( 参考 Python 官方文件:random ):
| 方法 | 参数 | 说明 |
|---|---|---|
| seed() | x | 设定随机数的种子 |
| random() | 产生一个 0.0~1.0 之间的随机浮点数 | |
| uniform() | x, y | 产生一个 x~y 之间的随机浮点数 |
| randint() | x, y | 产生一个 x~y 之间的随机整数 |
| randrange() | x, y, step | 产生一个间隔为 step,x~y 之间的随机整数 |
| choice() | seq | 从字串、串列或 tuple 中,随机取出一个项目 |
| choices() | seq, k | 从字串、串列或 tuple 中,随机取出 k 个项目 ( 可能重复 ) |
| sample() | seq, k | 从字串、串列或 tuple 中,随机取出 k 个项目 ( 不会重复 ) |
| shuffle() | seq | 将原本的串列顺序打乱 |
import random
要使用 random 必须先 import random 模组,或使用 from 的方式,单独 import 特定的类型。
import random
from random import sample
seed(x)
Python random 模组所产生的随机数并不是真正的“随机”,而是算法根据“种子 seed”产生的一组数字,默认这个 seed 以电脑系统的时间为主,因此如果种子相同,就会产生相同的随机数,以下方的程序为例,种子如果都是 1,产生的随机数就一模一样。
import random
random.seed(1)
print(random.random()) # 0.13436424411240122
random.seed(1)
print(random.random()) # 0.13436424411240122
random.seed(1)
print(random.random()) # 0.13436424411240122
random()
random.random() 使用后会产生一个 0.0~1.0 之间的随机浮点数。
import random
print(random.random()) # 0.6958328667684435
uniform(x, y)
random.uniform(x, y) 使用后会产生一个 x~y 之间的随机浮点数。
import random
print(random.uniform(3,5)) # 3.691400829417505
randint(x, y)
random.randint(x, y) 使用后会产生一个 x~y 之间的随机整数。
import random
print(random.randint(2,10)) # 7
randrange(x, y, step)
random.randrange(x, y, step) 使用后会产生一个 x~y 之间的随机整数,step 默认为 1,表示要间隔多少数字,例如下方的程序将 step 设定为 2,取出的随机数就都会是偶数。
import random
print(random.randrange(2,10,2)) # 6
random.randrange 也可以只设定一个数字,表示 0~这个数字之间的随机整数。
import random
print(random.randrange(10)) # 9
choice(seq)
random.choice(seq) 可以从一个字串、串列或 tuple 中 ( 有顺序的对象 ),随机取出一个项目。
import random
print(random.choice([1,2,3,4,5])) # 2 串列
print(random.choice((1,2,3,4,5))) # 5 tuple
print(random.choice('12345')) # 1 字串
choices(seq, k)
random.choices(seq, k) 可以从一个字串、串列或 tuple 中 ( 有顺序的对象 ),随机取出 k 个项目,取出的项目可能会重复,并将这 k 个项目组成一个新的串列。
import random
print(random.choices([1,2,3,4,5],k=2)) # [2, 1]
print(random.choices((1,2,3,4,5),k=3)) # [3, 1, 1]
print(random.choices('12345',k=4)) # ['2', '5', '4', '4']
sample(seq, k)
random.sample(seq, k) 可以从一个字串、串列或 tuple 中 ( 有顺序的对象 ),随机取出 k 个项目,每个项目不会重复,并将这 k 个项目组成一个新的串列,k 一定要填入数字,且不能大于对象的长度 ( 例如串列的长度是 4,k 就不能大于 4 )。
import random
print(random.sample([1,2,3,4,5], k=4)) # [2, 5, 3, 4]
print(random.sample((1,2,3,4,5), k=4)) # [2, 1, 5, 4]
print(random.sample('12345', k=4)) # ['2', '5', '3', '1']
shuffle(list)
random.shuffle(seq) 使用后,会将原本的“串列”顺序打乱 ( 不支援 tuple,因为 tuple 不能被修改 )。
a = [1,2,3,4,5]
print(a) # [1,2,3,4,5]
random.shuffle(a)
print(a) # [3, 2, 5, 4, 1]
微信扫码关注
抖音扫码关注