==random 模块==

"Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin."

- John von Neumann, 1951``random`` 模块包含许多随机数生成器.

基本随机数生成器(基于 Wichmann 和 Hill ,1982的数学运算理论) 可以通过很多方法访问,

如 [Example2-29 #eg-2-29] 所示.

====Example 2-29. 使用 random 模块获得随机数字====[eg-2-29]

```

File: random-example-1.pyimportrandomfor i in range(5):#random float: 0.0 <= number < 1.0

printrandom.random(),#random float: 10 <= number < 20

print random.uniform(10, 20),#random integer: 100 <= number <= 1000

print random.randint(100, 1000),#random integer: even numbers in 100 <= number < 1000

print random.randrange(100, 1000, 2)*B*0.946842713956 19.5910069381 709 172

0.573613195398 16.2758417025 407 120

0.363241598013 16.8079747714 916 580

0.602115173978 18.386796935 531 774

0.526767588533 18.0783794596 223 344*b*```

注意这里的 ``randint`` 函数可以返回上界,

而其他函数总是返回小于上界的值. 所有函数都有可能返回下界值.

[Example2-30 #eg-2-30] 展示了 ``choice`` 函数, 它用来从一个序列里分拣出一个随机项目.

它可以用于列表, 元组, 以及其他序列(当然, 非空的).====Example 2-30. 使用 random 模块从序列取出随机项====[eg-2-30]

```

File: random-example-2.pyimportrandom#random choice from a list

for i in range(5):print random.choice([1, 2, 3, 5, 9])*B*2

3

1

9

1*b*```

在2.0及以后版本, ``shuffle`` 函数可以用于打乱一个列表的内容

(也就是生成一个该列表的随机全排列). [Example2-31 #eg-2-31] 展示了如何在旧版本中实现该函数.

====Example 2-31. 使用 random 模块打乱一副牌====[eg-2-31]

```

File: random-example-4.pyimportrandomtry:#available in 2.0 and later

shuffle =random.shuffleexceptAttributeError:defshuffle(x):for i in xrange(len(x)-1, 0, -1):#pick an element in x[:i+1] with which to exchange x[i]

j = int(random.random() * (i+1))

x[i], x[j]=x[j], x[i]

cards= range(52)

shuffle(cards)

myhand= cards[:5]printmyhand*B*[4, 8, 40, 12, 30]*b*```

``random`` 模块也包含了非恒定分布的随机生成器函数. [Example2-32 #eg-2-32]

使用了 gauss (高斯)函数来生成满足高斯分的布随机数字.====Example 2-32. 使用 random 模块生成高斯分布随机数====[eg-2-32]

```

File: random-example-3.pyimportrandom

histogram= [0] * 20

#calculate histogram for gaussian#noise, using average=5, stddev=1

for i in range(1000):

i= int(random.gauss(5, 1) * 2)

histogram[i]= histogram[i] + 1

#print the histogram

m =max(histogram)for v inhistogram:print "*" * (v * 50 /m)*B*****

**********

*************************

***********************************

************************************************

**************************************************

*************************************

***************************

*************

***

**b*```

你可以在//Python Library Reference//找到更多关于非恒定分布随机生成器函数的信息.*Note*标准库中提供的随机数生成器都是伪随机数生成器. 不过这对于很多目的来说已经足够了, 比如模拟, 数值分析, 以及游戏. 可以确定的是它不适合密码学用途.*note*

random是python标准库吗_python标准库介绍——27 random 模块详解相关推荐

  1. python的threading库_python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  2. python箱线图_Python 箱线图 plt.boxplot() 参数详解

    Python 绘制箱线图主要用 matplotlib 库里 pyplot 模块里的 boxplot() 函数. plt.boxplot() 参数详解 plt.boxplot(x, # 指定要绘制箱线图 ...

  3. 基于python的贝叶斯分类器_Python实现朴素贝叶斯分类器的方法详解

    本文实例讲述了Python实现朴素贝叶斯分类器的方法.分享给大家供大家参考,具体如下: 贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进行修正的定理,在概率论中具有重要地位. 先 ...

  4. python修改文件内容_Python批量修改文本文件内容的方法详解

    这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...

  5. python控制nao机器人_python控制nao机器人身体动作实例详解

    本文实例为大家分享了python控制nao机器人身体动作的具体代码,供大家参考,具体内容如下 今天读的代码,顺便写了出来,与文档的对比,差不多. import sys import motion im ...

  6. python中mat函数_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

  7. python format函数实例_python中强大的format函数实例详解

    python中format函数用于字符串的格式化 自python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快速处理各种字符串. 语法 它通过{}和:来代替%. 请看下 ...

  8. python中mat函数_Python中flatten( )函数及函数用法详解

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...

  9. python创建双链表_Python双链表原理与实现方法详解

    本文实例讲述了Python双链表原理与实现方法.分享给大家供大家参考,具体如下: Python实现双链表 文章目录 Python实现双链表 单链表与双链表比较 双链表的实现 定义链表节点 初始化双链表 ...

  10. python的对象数组_Python当中的array数组对象实例详解

    计算机为数组分配一段连续的内存,从而支持对数组随机访问: 由于项的地址在编号上是连续的,数组某一项的地址可以通过将两个值相加得出,即将数组的基本地址和项的偏移地址相加. 数组的基本地址就是数组的第一项 ...

最新文章

  1. ImageNet时代将终结?何恺明新作:Rethinking ImageNet Pre-training
  2. mysql Replication机制
  3. boost::detail::spinlock相关的测试程序
  4. sublime开发python需要安装哪些插件_Sublime text 3搭建Python开发环境及常用插件安装...
  5. 通过IHttpHandler实现图片验证码
  6. 95后夜猫子报告:三成熬夜到1点 夜间最爱追《乡村爱情》
  7. 逐渐摆脱高通和联发科!华为手机将采用更多麒麟芯片
  8. POJ 3734 Blocks (线性递推)
  9. ionic 视图滚动到顶部
  10. 《算法的乐趣》终于出版了
  11. java教程 doc,java 基础教程.doc
  12. 世界第一黑客:凯文.米特尼克
  13. 为什么要选择平台+独立站运营的双轨模式
  14. 学习React Native必看的几个开源项目
  15. linux停止阿里云盾服务
  16. LeCun:赋予机器 “常识” ,重新设计神经网络将是AI 研究重点
  17. 原理分析:安卓手机桌面长按分享,安卓发送软件apk,qq发送软件apk 原理
  18. [Discuz!] 头像HTML5上传 1.2 (saya_avatarupload)支持手机版
  19. 计算机专业的大学生必考证书,大学必考8大证书计算机
  20. Chart.js 中文文档(整理)

热门文章

  1. windows下替代SSH,Xshell软件的mobaxterm
  2. Java工程师成神之路思维导图
  3. Linux 的文件软链接如何删除
  4. 信息爆炸时代,对待信息的三种方式
  5. Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法
  6. 背景图片-密度屏幕(移动端)
  7. 【有意思的BUG】需要停止的进程
  8. 中国海洋大学第四届朗讯杯高级组 A 2718 Rocky(模拟)
  9. Redis数据库15点介绍
  10. CentOS中恢复rm命令误删文件