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使用xlrd模块操作Excel数据导入的方法
May 26 Python
python搭建虚拟环境的步骤详解
Sep 27 Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
【python】matplotlib动态显示详解
Apr 11 Python
django 使用全局搜索功能的实例详解
Jul 18 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
Python3爬虫里关于Splash负载均衡配置详解
Jul 10 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 Python
用python开发一款操作MySQL的小工具
May 12 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
PHP常用代码
2006/11/23 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python实现文件复制删除
2016/04/19 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
评析教师个人的自我评价
2014/02/19 职场文书
优秀实习生感言
2014/03/01 职场文书
物理学专业自荐信
2014/06/11 职场文书
春季运动会加油词
2015/07/18 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL