- 伪随机性:Python 使用 random 模块生成各种分布的伪随机数。计算机生成的随机数都是伪随机数,它们是由确定性算法生成的,只是看起来像随机。如果需要高度的随机性,需要额外的随机源。
- 不同类型的随机性:在模拟、密码学等场景中,需要注意不同类型的随机性需求。如果前往 Python 文档以获取此模块的文档,将会看到一条警告:
显然,random 模块只适用于一般的随机数需求。random 模块使用 Mersenne Twister 算法来生成随机数。但是这种算法是完全确定性的,而对于密码学等需要高强度随机性的场景,应该使用 secrets 模块。
Python random 模块的内置函数
下面是 random 模块下的各种内置函数。这些函数能够在不同场景下生成伪随机数:
下面的列表包含了上述随机数生成函数的简要说明:
函数名 | 描述 |
---|---|
randint(a, b) | 生成一个位于 [a, b] 范围内的随机整数 |
randrange(start, stop, step) | 生成一个以 step 递增的整数序列中的随机元素 |
random() | 生成一个位于 [0.0, 1.0) 范围内的随机浮点数 |
uniform(a, b) | 生成一个位于 [a, b) 范围内的随机浮点数 |
gauss(mu, sigma) | 生成一个符合高斯分布的随机浮点数,均值为 mu ,标准差为 sigma |
sample(population, k) | 从 population 序列中随机选择 k 个元素,不重复 |
choice(sequence) | 从序列中随机选择一个元素 |
shuffle(sequence) | 随机打乱序列中的元素顺序 |
seed(a=None) | 初始化随机数生成器的种子,用于重现随机序列 |
下面是这些函数的更详细介绍及示例。
randint()
此函数生成指定范围之间的整数。它接受两个参数
x
x
x 和
y
y
y 并生成整数
i
i
i,使得
x
<
=
i
<
=
y
x <= i <= y
x<=i<=y。
import random
a = random.randint(3, 6)
print(a) # 输出:3
randrange()
该函数生成一个以 step
为步长的整数序列中的随机元素。start
和 stop
是范围,取值范围是 [start, stop)
。若省略 step
参数,默认为 1。
import random
a = random.randrange(1, 10, 2)
print(a) # 输出:7
random()
该函数生成一个位于 [0.0, 1.0)
范围内的随机浮点数。所有数字在这个范围内的概率是相等的。
import random
a = random.random()
print(a) # 输出:0.6427979778735594
uniform()
该函数生成一个位于 [a, b)
范围内的随机浮点数。类似于random()
,但可以指定范围。
import random
a = random.uniform(3, 6)
print(a) # 输出:3.512451152441262
gauss(mu, sigma)
该函数生成一个符合高斯分布(也称为正态分布)的随机浮点数。mu
是均值,sigma
是标准差,控制分布的形状。
import random
a = random.gauss(3, 0.5)
print(a) # 输出:2.9743970359818612
sample()
如果想要一个序列中的多个随机元素,可以使用 sample()
。它需要两个参数 population
和 k
,其中 population
是一个序列,k
是一个整数。然后,该函数从 population
序列中随机选择 k
个元素,并以列表形式返回。选择不重复。
import random
seq = (12, 33, 67, 55, 78, 90, 34, 67, 88)
a = random.sample(seq, 5)
print(a) # 输出:[88, 78, 67, 34, 33]
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!