【Python学习笔记】第二十八节 Python random 模块

一、Python random简介

Python random 模块主要用于生成随机数。大部分python人都会用,但是一般人都是使用randint()帮我们生成某个范围的整数,但其实random模块还有很多非常使用的功能供我们使用,接下来我们就一一了解一下我们的random。

要使用 random 函数必须先导入:

import random

查看 random 模块中的内容:

1、random.random()方法

返回一个随机数,它在半开放区间 [0,1) 范围内,包含 0 但不包含 1,不需要设置参数

>>> random.random()
0.2616511625214011
>>> random.random()
0.8890603952284217
>>> random.random()
0.8248056914058357
>>> random.random()
0.2799936407293714
>>> random.random()
0.3768217306914913
>>> random.random()
0.7331169151350899
>>> random.random()
0.9229218977171018
>>> random.random()
0.36667098403412324

2、random.randint()方法

这是人们用得最多的方法,生成某个范围的随机整数,可以设置两个参数

# coding=utf-8

# 导入 random 包
import random

# 生成随机数
print(random.random())
# 生成某个范围的随机整数
print(random.randint(1, 10))
print(random.randint(1, 10))
print(random.randint(1, 10))
print(random.randint(1, 10))
print(random.randint(1, 10))

运行结果:

3、random.randrange()方法

random.randrange(开始, 结束, 步长)

此方法可以写三个参数,跟random.randint()是一样的,都是生成整数,但可以加上步长,可以设置1-3个参数

步长:每一次加几,好比循环里面的增量。默认是1。下图,我步长设置了2,就只会生成1-10之间的基数

# coding=utf-8

# 导入 random 包
import random

# 生成随机数
# print(random.random())
# 生成某个范围的随机整数
# print(random.randint(1, 10))
# 从 range(start, stop, step) 返回一个随机选择的元素。
print(random.randrange(1, 10, 2))
print(random.randrange(1, 10, 2))
print(random.randrange(1, 10, 2))

运行结果:

4、random.uniform()方法

返回一个随机浮点数 N ,当 a <= b 时 a <= N <= b ,当 b < a 时 b <= N <= a 。

设置某个范围内的浮点数,可以设置两个参数

# coding=utf-8

# 导入 random 包
import random

# 生成随机数
# print(random.random())
# 生成某个范围的随机整数
# print(random.randint(1, 10))

print(random.uniform(1.2, 9.9))

运行结果:

4.882993131511566

5、random.choice()方法

随机输出choice里面的参数,拥有此方法,就不再需要写遍历了

从非空序列 seq 返回一个随机元素。 如果 seq 为空,则引发 IndexError。

# coding=utf-8

# 导入 random 包
import random

# 生成随机数
# print(random.random())
# 生成某个范围的随机整数
# print(random.randint(1, 10))
# 从 range(start, stop, step) 返回一个随机选择的元素。
print(random.randrange(1, 10, 2))
print(random.randrange(1, 10, 2))
print(random.randrange(1, 10, 2))
# 返回一个随机浮点数 N
# print(random.uniform(1.2, 9.9))
# 随机输出choice里面的参数
print(random.choice("helloworld"))

运行结果:

l

6、random.sample()方法

返回从总体序列或集合中选择的唯一元素的 k 长度列表。 用于无重复的随机抽样。

# coding=utf-8

# 导入 random 包
import random

# 生成随机数
# print(random.random())
# 生成某个范围的随机整数
# print(random.randint(1, 10))
# 从 range(start, stop, step) 返回一个随机选择的元素。

# 返回从总体序列或集合中选择的唯一元素的 k 长度列表。 用于无重复的随机抽样。
print(random.sample("helloworld", 4))

运行结果:

['h', 'l', 'l', 'o']

7、random.shuffle()方法

将序列 随机打乱位置。

# coding=utf-8

# 导入 random 包
import random

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(arr)
print(arr)

运行结果:

[2, 6, 8, 4, 9, 5, 1, 3, 7]

8、seed() 方法

改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。

# coding=utf-8

# 导入 random 包
import random

# 生成随机数
# print(random.random())
# 生成某个范围的随机整数
# print(random.randint(1, 10))

random.seed()
print("使用默认种子生成随机数:", random.random())
print("使用默认种子生成随机数:", random.random())

random.seed(10)
print("使用整数 10 种子生成随机数:", random.random())
random.seed(10)
print("使用整数 10 种子生成随机数:", random.random())

random.seed("hello", 2)
print("使用字符串种子生成随机数:", random.random())

运行结果:

使用默认种子生成随机数: 0.8557562135918899
使用默认种子生成随机数: 0.8674208965484477
使用整数 10 种子生成随机数: 0.5714025946899135
使用整数 10 种子生成随机数: 0.5714025946899135
使用字符串种子生成随机数: 0.3537754404730722

二、分布的随机数

关于这种分布的随机,在我们python里不是太常用,以下这张图是从网络上截取的,如果有兴趣的小伙伴可以更加深入了解

三、random 模块常用方法

random 模块方法如下:

方法

描述

seed()

初始化随机数生成器

getstate()

返回捕获生成器当前内部状态的对象。

setstate()

state 应该是从之前调用 getstate() 获得的,并且 setstate() 将生成器的内部状态恢复到 getstate() 被调用时的状态。

getrandbits(k)

返回具有 k 个随机比特位的非负 Python 整数。 此方法随 MersenneTwister 生成器一起提供,其他一些生成器也可能将其作为 API 的可选部分提供。 在可能的情况下,getrandbits() 会启用 randrange() 来处理任意大的区间。

randrange()

从 range(start, stop, step) 返回一个随机选择的元素。

randint(a, b)

返回随机整数 N 满足 a <= N <= b。

choice(seq)

从非空序列 seq 返回一个随机元素。 如果 seq 为空,则引发 IndexError。

choices(population, weights=None, *, cum_weights=None, k=1)

从 population 中选择替换,返回大小为 k 的元素列表。 如果 population 为空,则引发 IndexError。

shuffle(x[, random])

将序列 x 随机打乱位置。

sample(population, k, *, counts=None)

返回从总体序列或集合中选择的唯一元素的 k 长度列表。 用于无重复的随机抽样。

random()

返回 [0.0, 1.0) 范围内的下一个随机浮点数。

uniform()

返回一个随机浮点数 N ,当 a <= b 时 a <= N <= b ,当 b < a 时 b <= N <= a 。

triangular(low, high, mode)

返回一个随机浮点数 N ,使得 low <= N <= high 并在这些边界之间使用指定的 mode 。 low 和 high 边界默认为零和一。 mode 参数默认为边界之间的中点,给出对称分布。

betavariate(alpha, beta)

Beta 分布。 参数的条件是 alpha > 0 和 beta > 0。 返回值的范围介于 0 和 1 之间。

expovariate(lambd)

指数分布。 lambd 是 1.0 除以所需的平均值,它应该是非零的。

gammavariate()

Gamma 分布( 不是伽马函数) 参数的条件是 alpha > 0 和 beta > 0。

gauss(mu, sigma)

正态分布,也称高斯分布。 mu 为平均值,而 sigma 为标准差。 此函数要稍快于下面所定义的 normalvariate() 函数。

lognormvariate(mu, sigma)

对数正态分布。 如果你采用这个分布的自然对数,你将得到一个正态分布,平均值为 mu 和标准差为 sigma 。 mu 可以是任何值,sigma 必须大于零。

normalvariate(mu, sigma)

正态分布。 mu 是平均值,sigma 是标准差。

vonmisesvariate(mu, kappa)

冯·米塞斯分布。 mu 是平均角度,以弧度表示,介于0和 2*pi 之间,kappa 是浓度参数,必须大于或等于零。 如果 kappa 等于零,则该分布在 0 到 2*pi 的范围内减小到均匀的随机角度。

paretovariate(alpha)

帕累托分布。 alpha 是形状参数。

weibullvariate(alpha, beta)

威布尔分布。 alpha 是比例参数,beta 是形状参数。

四、总结

其实我们的random模块还是有很多非常使用的方法呢,使用起来也是非常的简单,灵活运用起来可以帮助我们节省很多代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宝爷~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值