添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
温柔的大葱  ·  Xamarin Forms: How to ...·  1 月前    · 
年轻有为的山羊  ·  How to inject random ...·  1 月前    · 
坚强的猴子  ·  How to create a ...·  2 周前    · 
任性的数据线  ·  C++ ...·  1 周前    · 
痴情的酸菜鱼  ·  TTree random access - ...·  6 天前    · 
沉稳的木瓜  ·  SQL Server Kill Process·  6 月前    · 
Python模块和包
12 Python常见模块
12.1 Python sys
12.2 Python os
12.3 Python random
12.4 Python time
12.5 Python json
12.6 Python re
12.7 Python set和frozenset
12.8 Python queue
12.9 Python heapq
12.10 Python ChainMap
12.11 Python Counter
12.12 Python defaultdict
12.13 Python namedtuple
12.14 Python OrderedDict
12.15 Python itertools
12.16 Python functools
Python文件操作(I/O) Python数据库编程 Python并发编程 Python文档和测试 Python打包和发布 Python网络编程 Tkinter Python数据可视化 Python Scrapy网络爬虫
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']

开发者同样不需要完全记住这些属性和函数的含义,在使用时可参考 https://docs.python.org/3/library/random.html
在 random 模块下提供了表 1 所示的常用函数。
表 1 random模块常用函数 random模块常用函数 random.seed(a=None, version=2) 指定种子来初始化伪随机数生成器。 random.randrange(start, stop[, step]) 返回从 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。 关于生成伪随机浮点数的函数,Python 还提供了 random.triangular(low, high, mode)、random.gauss(mu, sigma) 等,它们用于生成呈对称分布、高斯分布的随机数。由于这种随机数需要一些数学知识来理解它们,而且平时开发并不常用,因此这里就不深入展开介绍了。
下面程序示范了 random 模块中常见函数的功能和用法:
import random #生成范围为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.7097266660597923
6.4845555071809535
9.707899380000603
Python
['Swift', 'Python', 'Kotlin']
[20, 10, 30, 50]

实际上,使用 random 模块中的随机函数可以做很多很有趣的事情。比如下面程序: import random import collections #指定随机抽取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 元素有多少个,再除以20 print(seen.count('tens')/20) 运行上面程序,可以看到如下输出结果: ['Swift', 'Swift', 'Swift', 'Swift', 'Python', 'Swift']
从上面的输出结果来看,在第一次抽取的 6 个元素中 Kotlin 完全没有被抽取到,这是因为它的被抽取比例太低了。
< 上一页 Python os Python time 下一页 >
  • socket
  • Python基础教程
  • MySQL函数
  • MySQL
  • C语言入门
  • C语言专题
  • C语言编译器
  • C语言编程实例
  • GCC编译器
  • C语言项目案例
  • C++教程
  • OpenCV
  • Unity 3D教程
  • Redis
  • Android教程
  • JavaScript
  • Mybatis
  • Spring Cloud
  • Maven
  • Spring Boot
  • Spring MVC
  • Hibernate
  • Linux
  • Linux命令
  • Shell脚本
  • Java教程
  • Spring
  • Servlet
  • Struts2
  • Java Swing
  • JSP教程
  • CSS教程
  • TensorFlow
  • Go语言教程
  • Docker
  • VIP视频
  • const关键字及其作用(用法),C语言const详解
  • C++ list(STL list)删除元素方法详解
  • C语言选择排序算法
  • Shell提示符:#和$
  • Java Byte类
  • 在C语言中使用英文字符
  • 使用汇编语言实现算术表达式[实例]
  • Linux tar命令备份数据
  • Struts2 ActionContext.getContext()方法:获取ActionContext对象
  • JS中的if和switch该如何选择?
  •