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实现提取文章摘要的方法
Apr 21 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
pandas中Timestamp类用法详解
Dec 11 Python
Python聊天室程序(基础版)
Apr 01 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
Python中fnmatch模块的使用详情
Nov 30 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
python实现windows倒计时锁屏功能
Jul 30 Python
pandas read_excel()和to_excel()函数解析
Sep 19 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
python操作gitlab API过程解析
Dec 27 Python
Python OpenCV形态学运算示例详解
Apr 07 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生成缩略图的代码
2011/01/12 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
javascript 动态添加表格行
2006/06/22 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
微信小程序自定义组件
2017/08/16 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
用Python实现KNN分类算法
2017/12/22 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Python模块相关知识点小结
2020/03/09 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
入党申请书自我鉴定
2013/10/12 职场文书
中专生职业生涯规划书范文
2013/12/29 职场文书
班组长岗位职责范本
2014/01/05 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书