Python学习—–随机数篇

Python学习—–随机数篇本文介绍了 Python 中生成随机数的方法 包括随机整数的 randint 和 randrange 函数 以及随机浮点数的 random 和 uniform 函数

大家好,欢迎来到IT知识分享网。

目录

 一.随机数字

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])) #列表 

输出结果:

Python学习-----随机数篇

 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)))

Python学习-----随机数篇

 示例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)))

Python学习-----随机数篇

 示例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))

Python学习-----随机数篇

 示例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)))

Python学习-----随机数篇

 (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))

Python学习-----随机数篇

这里我们可以看到,用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)

Python学习-----随机数篇

三.随机数种子

 需要导入的库 

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学习-----随机数篇

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/155150.html

(0)
上一篇 2025-02-21 15:15
下一篇 2025-02-21 15:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信