计算机系统应用教程网站

网站首页 > 技术文章 正文

实战python中Random模块使用 python random模块详解

btikc 2024-10-11 11:20:53 技术文章 3 ℃ 0 评论

一、random模块简介

Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。

要在Python中使用random模块,只需要Import就行

三种导入方式都可以的

二、random模块函数(加粗的为常用函数

  1. random.seed(a=None, version=2) # 初始化伪随机数生成器。如果未提供a或者a=None,则使用系统时间为种子。如果a是一个整数,则作为种子。

  2. random.getstate() # 返回一个当前生成器的内部状态的对象

  3. random.setstate(state) # 传入一个先前利用getstate方法获得的状态对象,使得生成器恢复到这个状态。

  4. random.getrandbits(k) # 返回range(0,2**k)之间的一个整数,相当于randrange(0,2**k)

  5. random.randrange(stop) # 返回range(0,stop)之间的一个整数

  6. random.randrange(start, stop[, step]) # 返回range[start,stop)之间的一个整数,可加step,跟range(0,10,2)类似

  7. random.randint(a, b) # 返回range[a,b]之间的一个整数,等价于然的range(a,b+1)

  8. random.choice(seq) # 从非空序列seq中随机选取一个元素。如果seq为空则弹出 IndexError异常。

  9. random.choices(population, weights=None, *, cum_weights=None, k=1) # 3.6版本新增。从population集群中随机抽取K个元素(可重复)。weights是相对权重列表,cum_weights是累计权重,两个参数不能同时存在。

  10. random.shuffle(x[, random]) # 随机打乱序列x内元素的排列顺序。只能针对可变的序列,对于不可变序列,请使用下面的sample()方法。

  11. random.sample(population, k) # 从population样本或集合中随机抽取K个不重复的元素形成新的序列。常用于不重复的随机抽样。返回的是一个新的序列,不会破坏原有序列。要从一个整数区间随机抽取一定数量的整数,请使用sample(range(10000000), k=60)类似的方法,这非常有效和节省空间。如果k大于population的长度,则弹出ValueError异常。

  12. random.random() # 返回一个介于左闭右开[0.0, 1.0)区间的浮点数

  13. random.uniform(a, b) # 返回一个介于a和b之间的浮点数。如果a>b,则是b到a之间的浮点数。这里的a和b都有可能出现在结果中。

  14. random.triangular(low, high, mode) # 返回一个low <= N <=high的三角形分布的随机数。参数mode指明众数出现位置。

  15. random.betavariate(alpha, beta) # β分布。返回的结果在0~1之间

  16. random.expovariate(lambd) # 指数分布

  17. random.gammavariate(alpha, beta) # 伽玛分布

  18. random.gauss(mu, sigma) # 高斯分布

  19. random.lognormvariate(mu, sigma) # 对数正态分布

  20. random.normalvariate(mu, sigma) # 正态分布

  21. random.vonmisesvariate(mu, kappa) # 卡帕分布

  22. random.paretovariate(alpha) # 帕累托分布

  23. random.weibullvariate(alpha, beta) # 威布尔分布

三、random模块方法使用

Python IDLE具体代码演示

>>> import random

>>> random.random()#随机生成[0.1)的浮点数

0.8652297719970958

>>> random.randint(1000, 9999)# 随机生成1000-9999之间的整数

5804

>>> random.randrange(1000)# 随机生成0-1000之间的整数

468

>>> random.randrange(20,1000,2)#随机生成2-1000之间的偶数

SyntaxError: invalid character in identifier

>>> random.randrange(20,1000,2)

892

>>> random.uniform(0, 20)# 随机生成0-20之间的浮点数

15.87726887991787

>>> #从序列中随机选择一个元素

>>> random.choice(['apple','pear','banana','orange'])

'banana'

>>> random.choice('abcdrtrtrtrtfdf')

'b'

>>> random.getrandbits(8)#返回range(0,2**8)之间的一个整数,相当于randrange(0,2**k)

22

>>> random.uniform(1,20)#返回一个介于a和b之间的浮点数。如果a>b,则是b到a之间的浮点数。这里的a和b都有可能出现在结果中。

11.358755171444706

>>> # 对列表元素随机排序

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

>>> random.shuffle(list_number)

>>> list_number

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

>>> # 字符串对象是不可变对象,所以不能排序

>>> s = 'abcdefghijklmn'

>>> random.shuffle(s)

Traceback (most recent call last):

File "<pyshell#18>", line 1, in <module>

random.shuffle(s)

File "D:\Python\lib\random.py", line 276, in shuffle

x[i], x[j] = x[j], x[i]

TypeError: 'str' object does not support item assignment

>>> #从0-10000000整数集合中随机抽取60个不重复的元素形成新的序列。

>>> random.sample(range(10000000),k=60)

[2983349, 7093517, 8915286, 3478372, 9937118, 3419360, 4531987, 9295876, 9449989, 142671, 9667443, 5764505, 8966326, 7146975, 5632549, 147436, 4470903, 9893492, 3930802, 7473709, 595863, 4692927, 3143474, 3864229, 6361741, 2610849, 8124441, 6437125, 552870, 5516169, 7253043, 5268703, 5207281, 8539462, 8148407, 934218, 1146450, 547868, 2945959, 9307084, 1142094, 6909424, 9819703, 2184980, 8987789, 7674919, 8107778, 7395389, 3283308, 8341618, 3578819, 6648223, 3284818, 424632, 7260161, 4440014, 2208221, 1848044, 7427776, 650644]

>>> # 从指定序列中随机获取指定长度的片断

>>> random.sample('abcdefg', 2)

['g', 'b']

四、random模块案例演示

编写一个随机生成语句的程序,通过随机选取相应的冠词,主题词,动词以及状语,然后组合成一个句子,这个句子往往能够达到让人啼笑皆非的效果。请看具体演示。

程序源码

输出结果

五、总结

random函数是非常重要的函数模块,Python中任何与随机相关的问题,都可以首先考虑random模块,熟悉掌握其中的常用方法,是一个对程序员的最基本要求。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表