详解python random模块的常用函数


random是一个经常使用的模块,把常用的函数整理一下,区分一下。

1. 导入random模块

>>>import random

2. 常见函数

2.1 random.choice

随机返回非空序列中的一个元素。

  • random.choice(seq)
>>> lst = [1, 2, 3]
>>> random.choice(lst)
2

2.2 random.randrange

返回[start, stop)之间的一个随机数,step指定可选随机数的步长。

  • random.randrange(stop)
  • random.randrange(start, stop[, step])
>>> [random.randrange(5) for _ in range(10)]  # [0, 5)之间的随机数
[4, 1, 0, 1, 0, 4, 2, 4, 3, 4]

>>> [random.randrange(1, 5) for _ in range(10)]  # [1, 5)之间的随机数
[1, 4, 3, 2, 2, 4, 3, 2, 4, 2]

>>>>>> [random.randrange(0, 10, 3) for _ in range(10)]  # 指定步长之后产生的随机数只能在[0, 3, 6, 9,]中取得
[0, 9, 9, 0, 6, 6, 3, 6, 6, 3]


注:输入参数,返回值都是整型

2.2.1 random.randrange()和random.randchoice()的关系

  • random.randrange(),可以看成先生成一个序列range(start, stop, step),然后用random.choice()从中选择一个随机数。
random.randrange(0, 10, 3)
# 等价于
random.choice(range(0, 10, 3))  # range()生成了[0, 3, 6, 9]

2.3 random.randint

返回[a, b]之间的一个整数。

  • random.randint(a, b)
>>> [random.randint(0, 5) for _ in range(10)]  # 两个边界都可以取
[5, 0, 3, 5, 3, 0, 1, 1, 1, 3]

2.4 random.shuffle

随机打乱一个序列。

  • random.shuffle(seq)
>>> lst = [1, 2, 3]
>>> random.shuffle(lst)  # random.shuffle()直接作用于lst,无返回值
>>> lst
[1, 3, 2]

2.5 random.sample

从序列中随机挑选k个数,作为一个list返回。

  • random.sample(seq, k)
>>> lst = [i for i in range(10)]
>>> random.sample(lst, 3)
[9, 5, 4]

2.6 random.random

返回一个[0.0, 1.0)之间的浮点数。

  • random.random()
>>> random.random()
0.26480637373637905
  • 使用np.random.random(),得到random.random()矩阵
>>> import numpy as np
>>> np.random.random((2, 2))  # 指定形状
array([[0.20018354, 0.20222348],
       [0.89138798, 0.87710066]])

2.6 random.uniform

返回[a, b]之间的一个浮点数

  • random.uniform(a, b)
>>> random.uniform(1, 2)
1.5487841132956464

2.7 random.seed

设置一个随机数种子。

>>> random.seed(123)  # 在随机函数之前设置,以获得相同的随机值 
>>> random.randint(1, 5)
1
>>> random.seed(123)
>>> random.randint(1, 5)
1
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值