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删除指定目录下过期文件的2个脚本分享
Apr 10 Python
用Python编写一个简单的FUSE文件系统的教程
Apr 02 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
python中lambda()的用法
Nov 16 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
Python实现的质因式分解算法示例
May 03 Python
Python异常处理操作实例详解
May 10 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
python3中calendar返回某一时间点实例讲解
Nov 18 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
PHP实现的购物车类实例
2015/06/17 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
jQuery数组处理方法汇总
2011/06/20 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
Python多线程实例教程
2014/09/06 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
python求质数的3种方法
2018/09/28 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
岗位职责范本
2013/11/23 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
初中英语演讲稿
2014/04/29 职场文书
开服装店计划书
2014/08/15 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
感动中国何玥观后感
2015/06/02 职场文书
杨善洲观后感
2015/06/04 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python