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 相关文章推荐
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
Python解决走迷宫问题算法示例
Jul 27 Python
Linux下python3.6.1环境配置教程
Sep 26 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 Python
TensorFlow 显存使用机制详解
Feb 03 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
Python定义一个Actor任务
Jul 29 Python
Python利用命名空间解析XML文档
Aug 10 Python
Python之字典添加元素的几种方法
Sep 30 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 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 CI框架插入一条或多条sql记录示例
2014/07/29 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
快速入手Python字符编码
2016/08/03 Python
Python实现简单求解给定整数的质因数算法示例
2018/03/25 Python
Python 元类实例解析
2018/04/04 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
Python import与from import使用及区别介绍
2018/09/06 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
Python 没有main函数的原因
2020/07/10 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
运动会领导邀请函
2014/01/10 职场文书
中学生获奖感言
2014/02/04 职场文书
学校师德师风整改措施
2014/10/27 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers