Python学习-----随机数篇
目录
一.随机数字
1.随机整数
(1)包含上下限(闭区间)
(2)包含下限,不包含上限(下闭上开)
(3)设置步长(间隔)
randint与randrange区别
2.随机浮点数
(1)0~1之间的浮点数
(2)随机浮点数[a,b]
二.有序序列随机值
1.随机获取单个数据结果
2.随机获取多个数据结果
(1)一次取一个,多次取(抛硬币法则,二项分布)
(2)一次获取多个(离散型分布)
choices与sample区别
3.随机打乱序列的顺序(是可变序列)
三.随机数种子
一.随机数字
需要导入的库
import random
1.随机整数
(1)包含上下限(闭区间)
获取一个下限为a,上限为b的随机整数[a,b]
random.randint(a,b)
import random
#示例
a=random.randint(89,88)
print(a)
注意事项:下限不可以大于上限,否则会报错
(2)包含下限,不包含上限(下闭上开)
获取一个下限闭区间为a,上限开区间为b的随机整数[a,b)
random.randrange(a,b)
#示例
import random
a=random.randrange(12,55)
print(a)
(3)设置步长(间隔)
获取一个下限闭区间为a,上限开区间为b的随机整数[a,b),同时步长为step
random.randrange(a,b,step)
举个例子:获取0~100之间的随机数,同时步长为2, 可以random.randrange(0,100,2),那么输出结果应该是0,2,4,5,6,8,10,12………98,注意100是取不到的哦,是开区间
#示例
import random
a=random.randrange(12,99,2)
print(a)
randint与randrange区别
randint两边是闭区间;randrange左边是闭区间,右边是开区间
randint不可以设置步长;randrange可以设置步长
2.随机浮点数
(1)0~1之间的浮点数
获取一个0~1之间的浮点数
random.random()
import random
a=random.random()
print(a)
(2)随机浮点数[a,b]
获取一个下限为a,上限为b的浮点数(都是闭区间)
random.uniform(a, b)
random.uniform(a, b)是允许下限大于上限的,不会报错,两边取闭区间。
import random
a=random.uniform(12,33) #获取一个12~33之间的浮点数
a=random.uniform(33,12) #获取一个12~33之间的浮点数
print(a)
二.有序序列随机值
需要导入的库
import random
1.随机获取单个数据结果
在一个有序序列里面,获取一个其中单个数据(有序序列包括字符串、列表、元组等等)
random.choice(有序序列),例如:random.choice([1,'wad',5,8])
获取的数据类型是根据数据实际类型去定义的,比如:获取到了 8 那么就是int类型;获取到了'wad' 那就是str类型
import random
print(random.choice('abcdef')) #字符串
print(random.choice((12,'kk','蔡徐坤','只因'))) #元组
print(random.choice(['李白','韩信','孙悟空','百里玄策'])) #列表
print(random.choice([1,'wad',5,8])) #列表
输出结果:
2.随机获取多个数据结果
(1)一次取一个,多次取(抛硬币法则,二项分布)
获取一个有序序列中多个数据,而且每次取其中一个数据,获取多次random.choices(li,weights,k)
注释:其中 li是有序序列名字,weights 是表示概率(如果不设置就默认每个数据被取到的概率相同),k 是表示获取次数
这个函数获取的所有数据是放到一个集合的,都是列表类型(除元组外),而且数据结果可能重复相等
示例1:
如果使用 random.choices 时没有设置weights和k的值,那么默认获取一个数据,而且每个数据被获取的概率都是相等的
import random
li=[False,77,'蔡徐坤',3.1415,'IKUN']
print(random.choices(li))
print(type(random.choices(li)))
示例2:
如果设置了获取次数k的值,没有设置weights的值,那就是每次获取一个数据,次数为k,而且每个数据的被获取概率都相等(抛硬币法则)
import random
li=[False,77,'蔡徐坤',3.1415,'IKUN']
print(random.choices(li,k=2))
print(type(random.choices(li,k=2)))
示例3:
自定义数据被获取概率的值weights和获取次数的值
import random
li=[False,77,'蔡徐坤',3.1415,'IKUN']
#这里定义这5个数据被获取的概率是8:1:2:3:2 ,获取次数为3
print(random.choices(li,weights=[8,1,2,3,2],k=3))
示例4:
即使li 是字符串(str),但是获取的结果还是列表类型;但是如果是元组类型的话,那么获取的结果就是元组类型(tuple)了
import random
li='12345'
gg=(520,'蔡徐坤',3.3,True,888)
print(type(gg))
print(random.choices(li,weights=[8,1,2,3,2],k=2))
print(type(random.choices(li,weights=[8,1,2,3,2],k=2)))
(2)一次获取多个(离散型分布)
一次性获取一个有序序列中多个数据
random.sample(li,k)
注释:其中li是列表名字,k是获取个数
这个函数获取的所有数据不存在重复的情况,是直接一次性获取k个数据(离散型分布),当然,结果类型也都是列表类型
import random
tupl=('1123',55,3.14,'好兆头')
li=[520,'蔡徐坤',3.3,True,888]
a=random.sample(li,k=3) #一次性获取3个数据
b=random.sample(tupl,k=2)
print(a,type(a))
print(b,type(b))
这里我们可以看到,用sample随机获取列表或者元组的数据,结果类型都是列表类型
注意事项:这个函数是一次性选择多个的,所以序列里面的数据格式必须大于选择个数,否则就会报错
choices与sample区别
1.choices是每次随机选择一个数据,可以选择多次,数据可能出现重复;而sample是一次性选择多个数据,数据不可能重复。
2.choices是可以设置数据被选择的概率的,而sample是不可以的
3.choices的数据个数是可以小于选择次数的,而sample的数据格式是不可以小于选择个数的
4.choices随机获取元组的数据,得到的结果数据类型还是元组类型(tuple),而sample得到的结果都是列表类型(list)
3.随机打乱序列的顺序(是可变序列)
已知一个列表,我想打乱这个列表的排列顺序,然后重新输出结果
random.shuffle(列表名)
注意事项:被打乱的序列必须是可变的,比如列表,如果是元组的话就会报错,因为元组是不可修改的
这个函数是直接返回已经被打乱好的列表,然后覆盖到原来的列表,所以我们直接输出原来的列表名字就行了
示例:
import random
li=['中国','美国','英国','日本','法国','俄罗斯']
random.shuffle(li)
print(li)
三.随机数种子
需要导入的库
import random
之前在学习C语言的时候我们接触过了随机数种子,这个种子是根据此时此刻的时间来产生与之相对应的随机数,因为时间是一直在向前走的,所以每一次产生的随机数都是不一样的,而在Python中也有随机数种子,但是与C语言不同的是,在Python每次产生的随机数本身就是随着时间变化,而产生不同的随机数,所以Python的随机数种子跟C语言的不一样,实际上是一种定时间的功能,设立随机数种子来保证每次产生的随机数都是具有可知性的
random.seed(时间数)
不同的时间数,产生的随机数是不一样的,但是如果是同一个时间数,那么产生的数据是一样的
示例:
import random
random.seed(12)
li=('哈哈',56,3.221,False,'250')
a=random.choice(li)
print(a,type(a))
实际上每次输出的结果都是一样的,如果我们把随机数种子的时间数改为其他的话,那么产生的随机数据就不一样了
小伙伴们,学会了吗?是不是很有意思呢!
送一张壁纸给大家
Python学习-----随机数篇相关推荐
- python学习高级篇(part10)--类对象的特殊方法和特殊属性
学习笔记,仅供参考,有错必纠 文章目录 python 学习高级篇 类对象的特殊方法之`__del__()` 类对象的特殊方法之`__getattr__()` 类对象的特殊方法之`__getitem__ ...
- python学习高级篇(part9)--对象的引用计数
学习笔记,仅供参考,有错必纠 文章目录 python 学习高级篇 类对象的特殊方法之`__str__()` 类对象的特殊方法之`__new__()` 对象的引用计数 什么是引用计数 对象的引用计数加1 ...
- python学习高级篇(part8)--类对象的特殊方法
学习笔记,仅供参考,有错必纠 文章目录 python 学习高级篇 类对象的特殊方法之`__iter__()`和`__next__()` 类对象的特殊方法之`__add__()`和`__radd__() ...
- python学习高级篇(part7)--特殊属性和特殊方法
学习笔记,仅供参考,有错必纠 文章目录 python 学习高级篇 特殊属性和特殊方法 获取对象的信息之特殊属性`__dict__` 获取对象的信息之反射 类对象的特殊方法`__len__()` pyt ...
- Python学习第九篇:zipfile 库操作压缩包
Python学习第九篇:zipfile 库操作压缩包 -- 活动地址:CSDN21天学习挑战赛 zipfile是python里用来做zip格式编码的压缩和解压缩的 zipfile里有两个非常常用的 ...
- [Python学习]错误篇二:切换当前工作目录时出错——FileNotFoundError: [WinError 3] 系统找不到指定的路径...
REFERENCE:<Head First Python> ID:我的第二篇[Python学习] BIRTHDAY:2019.7.13 EXPERIENCE_SHARING:解决切换当前工 ...
- Python学习-基础篇7 网络编程
#pytho 基础之socket编程 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架 ...
- python学习基础篇Day04(P36~~49)
b站达内python课学习笔记 P36 Python基础-4.1 课程内容回顾 一.day03复习 """day03 复习语句选择语句if bool类型的条件:满足条件执 ...
- python学习高级篇(part3)--MRO
学习笔记,仅供参考,有错必究 MRO MRO的全称是Method Resolution Order(方法解析顺序),它指的是对于一颗类继承树,当调用最底层类对象所对应实例对象的方法时,Python解释 ...
最新文章
- kali linux安装ftp服务,CentOS7安装和配置FTP
- 接受返回值 server sql_SQL,何必在忆之一(基础篇)
- hello world!!(Java)
- API编程基本控件使用
- OpenGL学习笔记以及其它学习思考
- 定位 - CoreLocation - 打印位置信息
- ASP.NET Core的配置(1):读取配置信息
- 前端学习(1186):双向数据绑定
- 【js】event(事件对象)详解
- 由耶稣遗物看西方历史的造假
- 【Codeforces 1051D】Bicolorings
- matlab 程序改写为 python 程序的方法
- 445端口爆破试验 net use IPC$
- ANSYS CFD网格划分笔记2
- ERP原理学习3-5
- c语言高亮字符,C语言语法高亮工具
- 翌加:抖音小店可以绑定几个抖音号
- java算法:逻辑回归和线性回归
- 几种Linux备份方法
- Python3 pd.dataframe写入csv和xlsx
热门文章
- 分账系统如何给连锁便利店带来交易效率革命?
- 2020年Python文章盘点,我选出了个人TOP10
- 评论有礼丨你关心的都安排上了!Cocos开发者沙龙「深圳站」下周回归,点击报名...
- 该驱动程序只能与 SQL Server 2000 或更高版本一起使用
- os.getcwd()用法
- 过滤器篇(2)-----过滤器设置编码格式与清除浏览器缓存(EncodingFilter , NoCacheFilter)
- Subject 与 Observable 的区别
- K8S 证书过期的解决方法
- JS中字符串常用方法
- 关于SQL的学习记录(九、聚合函数与分组数据)