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 11 Python
Python中sort和sorted函数代码解析
Jan 25 Python
Python多线程threading和multiprocessing模块实例解析
Jan 29 Python
python的dataframe和matrix的互换方法
Apr 11 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
3分钟学会一个Python小技巧
Nov 23 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
自学python的建议和周期预算
Jan 30 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
Pytorch上下采样函数--interpolate用法
Jul 07 Python
Django如何继承AbstractUser扩展字段
Nov 27 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
dedecms模版制作使用方法
2007/04/03 PHP
PHP数据类型的总结分析
2013/06/13 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
php中的ini配置原理详解
2014/10/14 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
php 使用array函数实现分页
2015/02/13 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
复习Python中的字符串知识点
2015/04/14 Python
Python获取央视节目单的实现代码
2015/07/25 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
python实现图片识别汽车功能
2018/11/30 Python
Python中包的用法及安装
2020/02/11 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
说出数据连接池的工作机制是什么?
2013/04/19 面试题
最新大学职业规划书范文
2013/12/30 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
家长通知书教师评语
2014/04/17 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android