Python随机函数库random的使用方法详解


Posted in Python onAugust 21, 2019

前言

众所周知,python拥有丰富的内置库,还支持众多的第三方库,被称为胶水语言,随机函数库random,就是python自带的标准库,他的用法极为广泛,除了生成比较简单的随机数外,还有很多功能。使用random库:

import random

random库主要函数:

函数名 说明 用法
random() 生成一个0~1之间的随机浮点数,范围 0 random.random()
uniform(a,b) 返回a, b之间的随机浮点数,范围[a, b]或[a, b), 取决于四舍五入,a不一定要比b小 random.uniform(1,5)
randint(a, b) 返回a, b之间的整数,范围[a, b],注意:传入参数必须是整数,a一定要比b小 random.randint(0, 100)
randrang([start], stop[, step]) 类似range函数,返回区间内的整数,可以设置step。 random.randrang(1, 10, 2)
choice(seq) 从序列seq中随机读取一个元素 random.choice([1,2,3,4,5])
choices(seq,k) 从序列seq中随机读取k个元素,k默认为1 random.choices([1,2,3,4,5], k=3)
shuffle(x) 将列表中的元素打乱,俗称为洗牌。会修改原有序列。 random.shuffle([1,2,3,4,5])
sample(seq, k) 从指定序列中随机获取k个元素作为一个片段返回,sample函数不会修改原有序列 random.sample([1,2,3,4,5], 2)

random库中的大多数函数使用时,都需要先设计一个序列。如果我们不想每次都去定义,而只是想随机取出一些数字、字母组合的话,就需要用到另一个标准库string:

import string

用string库主要用里面定义的一些字符串常量:

常量 说明
ascii_lowercase 'abcdefghijklmnopqrstuvwxyz' a-z全小写字母
ascii_uppercase 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' A-Z全大写字母
ascii_letters ascii_lowercase + ascii_uppercase 所有大小写字母
digits '0123456789' 0-9数字集合
hexdigits digits + 'abcdef' + 'ABCDEF' 十六进制集合
octdigits '01234567' 八进制集合
punctuation !"#$%&'()*+,-./:;?@[]^_`{|}~ 特殊字符组合
printable digits + ascii_letters + punctuation + whitespace 所有字符集合

random库的使用举例:

1、对文件里的数据进行随机排序(类似名单洗牌,直接上代码,相信都看得懂)

import random
#打开文件
f=open(r'F:\py\123.txt','r')
#读取文件信息,赋予一个变量
data=f.read()
#关闭文件
f.close()
print('数据:',data)
print('\n')
#data是一个字符串,我们以‘,'分隔成一个列表
s=data.split(',')
#随机排序
random.shuffle(s)
print(s)

文件里的内容,也可以写成很多行,上面代码字符串分割时改动一下即可。

Python随机函数库random的使用方法详解

运行结果(可以多运行几遍看一下效果):

数据: A,B,C,D,E,F,G,H,I,J,K

['I', 'K', 'G', 'J', 'D', 'E', 'F', 'C', 'A', 'B', 'H']

2、利用random实现简单的随机红包发放。

import random
def red_packet(total,num):
 for i in range(num-1):
  per=random.uniform(0.01,total/2)
  total=total- per
  print('%.2f'%per)
 else:
  print('%.2f'%total) 
red_packet(10,5)

当然要实现像微信红包那种肯定是要复杂的多,会涉及到算法,这只是利用random库做一个举例。运行结果:

1.89
0.11
3.85
1.08
3.07

同样,多运行几次试试,会不一样。

3、string和random组合使用,随机验证码的生成。

​import random
import string
s=string.digits + string.ascii_letters
v=random.sample(s,4)
print(v)
print(''.join(v))

运行结果:

['2', 'T', 'd', 'H']
2TdH

以上只是random库的简单使用,还有很多其他的用法,大家可以去自己学习,最后引入一句一位前辈对我说过的话:“代码这种东西,自己去敲一遍试试!学不会只有一种原因,就是懒!”,大家共勉。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python动态加载变量示例分享
Feb 17 Python
详解Python中__str__和__repr__方法的区别
Apr 17 Python
python实现带错误处理功能的远程文件读取方法
Apr 29 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
Python 通过URL打开图片实例详解
Jun 01 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
python根据多个文件名批量查找文件
Aug 13 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
Django+zTree构建组织架构树的方法
Aug 21 #Python
python的移位操作实现详解
Aug 21 #Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 #Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 #Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 #Python
django自带serializers序列化返回指定字段的方法
Aug 21 #Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 #Python
You might like
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
JS常用函数使用指南
2014/11/23 Javascript
浅析node.js中close事件
2014/11/26 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
Python学习笔记_数据排序方法
2014/05/22 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
介绍一下write命令
2012/09/24 面试题
教师党员思想汇报
2014/01/06 职场文书
装修致歉信
2014/01/15 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
男性健康日的活动方案
2014/08/18 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
护士年终考核评语
2014/12/31 职场文书