python中random模块常见函数的功能和用法
小编给大家分享一下python中random模块常见函数的功能和用法,相信大部分人都还不怎么了解,因此分享这边文章给大家学习,希望大家阅读完这篇文章后大所收获,下面让我们一起去学习方法吧!
在 Python 的交互式解释器中先导入 random 模块,然后输入 random.__all__ 命令(__all__ 变量代表了该模块开放的公开接口),即可
看到该模块所包含的全部属性和函数:
>>>random.__all__['Random','seed','random','uniform','randint','choice','sample','randrange','shuffle','normalvariate','lognormvariate','expovariate','vonmisesvariate','gammavariate','triangular','gauss','betavariate','paretovariate','weibullvariate','getstate','setstate','getrandbits','choices','SystemRandom']
在 random 模块下提供了如下常用函数:
random.seed(a=None, version=2):指定种子来初始化伪随机数生成器。
random.randrange(start, stop[, stop]):返回从 start 开始到 stop 结束、步长为 step 的随机数。其实就相当于 choice(range(start, stop, step)) 的效果,只不过实际底层并不生成区间对象。
random.randint(a, b):生成一个范围为 a≤N≤b 的随机数。其等同于 randrange(a, b+1) 的效果。
random.choice(seq):从 seq 中随机抽取一个元素,如果 seq 为空,则引发 IndexError 异常。
random.choices(seq, weights=None, cum_weights=None, k=1):从 seq 序列中抽取 k 个元素,还可通过 weights 指定各元素被抽取的权重(代表被抽取的可能性高低)。
random.shuffle(x[, random]):对 x 序列执行洗牌“随机排列”操作。
random.sample(population, k):从 population 序列中随机抽取 k 个独立的元素。
random.random():生成一个从0.0(包含)到 1.0(不包含)之间的伪随机浮点数。
random.uniform(a, b):生成一个范围为 a≤N≤b 的随机数。
random.expovariate(lambd):生成呈指数分布的随机数。其中 lambd 参数(其实应该是 lambda,只是 lambda 是 Python 关键字,所以简写成 lambd)为 1 除以期望平均值。如果 lambd 是正值,则返回的随机数是从 0 到正无穷大;如果 lambd 为负值,则返回的随机数是从负无穷大到 0。
下面程序示范了 random 模块中常见函数的功能和用法:
importrandom#生成范围为0.0≤x<1.0的伪随机浮点数print(random.random())#生成范围为2.5≤x<10.0的伪随机浮点数print(random.uniform(2.5,10.0))#生成呈指数分布的伪随机浮点数print(random.expovariate(1/5))#生成从0到9的伪随机整数print(random.randrange(10))#生成从0到100的随机偶数print(random.randrange(0,101,2))#随机抽取一个元素print(random.choice(['Python','Swift','Kotlin']))book_list=['Python','Swift','Kotlin']#对列表元素进行随机排列random.shuffle(book_list)print(book_list)#随机抽取4个独立的元素print(random.sample([10,20,30,40,50],k=4))
运行上面程序,可以看到如下输出结果:
0.70972666605979236.48455550718095359.707899380000603270Python['Swift','Python','Kotlin'][20,10,30,50]
实际上,使用 random 模块中的随机函数可以做很多很有趣的事情。比如下面程序:
importrandomimportcollections#指定随机抽取6个元素,各元素被抽取的权重(概率)不同print(random.choices(['Python','Swift','Kotlin'],[5,5,1],k=6))#下面模拟从52张扑克牌中抽取20张#在被拍到的20张牌中,牌面为10(包括J、Q、K的的牌占多大比例#生成一个16个tens(代表10)和36个low_cards(代表其他牌)的集合deck=collections.Counter(tens=16,low_cards=36)#从52张牌中随机抽取20张seen=random.sample(list(deck.elements()),k=20)#统计tens元素有多少个,再除以20print(seen.count('tens')/20)
运行上面程序,可以看到如下输出结果:
['Swift','Swift','Swift','Swift','Python','Swift']0.45
以上是python中random模块常见函数的功能和用法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。