目录
一.随机数字
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))
实际上每次输出的结果都是一样的,如果我们把随机数种子的时间数改为其他的话,那么产生的随机数据就不一样了
小伙伴们,学会了吗?是不是很有意思呢!
送一张壁纸给大家 文章来源:https://www.toymoban.com/news/detail-808638.html
文章来源地址https://www.toymoban.com/news/detail-808638.html
到了这里,关于Python学习-----随机数篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!