python基础教程_学习笔记16:标准库:一些最爱——random

标准库:一些最爱

random

random模块包括返回随机数的函数,可以用于模拟或者用于任何产生随机输出的程序。

事实上,所产生的数字都是伪随机数,它们以一个可预测的系统作为基础,除非是为了强加密的目标,否则这些随机数还是足够随机的。如果真的需要随机性,可以使用os模块的urandom函数。

重要函数


函数


描述


random()


返回0<=n<1之间的随机实数n,其中0<n<=1


getrandbits(n)


以长整型形式返回n个随机位(二进制数)


uniform(a,b)


返回随机实数n,其中a<=n<b


randrange([start],stop,[step])


返回range(start,stop,step)中的随机数


choice(seq)


从序列seq中返回随意元素


shuffle(seq[,random])


原地指定序列seq


sample(seq,n)


从序列seq中选择n个随机且独立的元素

random.getrandbits以长整型形式返回给定的位数(二进制数)。如果处理的是真正的随机事务(比如加密),这个函数尤为有用。

>>> import random

>>> random.random()

0.21811083216655824

>>> random.getrandbits(2)

3L

>>> random.getrandbits(2)

3L

>>> random.getrandbits(2)

0L

>>> random.uniform(1,4)

3.511648764533735

>>> random.uniform(1,9)

6.00895159575027

>>> random.randrange(5,100,21)

5

>>> random.randrange(5,100,21)

26

>>> random.randrange(5,100,21)

68

>>> random.randrange(5,100,21)

47

>>> random.randrange(10)

4

>>> random.randrange(10)

3

>>> random.choice((5,6,9))

6

>>> random.choice([5,6,9])

6

>>> random.choice(‘signjing‘)

‘j‘

因为random.shuffle函数原地移位序列,因此要求序列一定是可变的。

>>> a=[‘a‘,‘b‘,‘c‘]

>>> random.shuffle(a)

>>> a

[‘b‘, ‘a‘, ‘c‘]

>>> random.shuffle(a)

>>> a

[‘c‘, ‘b‘, ‘a‘]

>>> random.sample(a,2)

[‘a‘, ‘c‘]

>>> random.sample(a,2)

[‘c‘, ‘b‘]

练习 获取随机数

脚本内容

$ cat random-example-1.py

#File : random-example-1.py

import random

for i in range(5):

print random.random(),

print random.uniform(10,20),

print random.randint(100,1000),

print random.randrange(100,1000,2)

执行结果

$ python random-example-1.py

0.370761541392 17.2201292256 839 342

0.808063846391 12.0582042123 224 910

0.855181475123 13.6575143789 406 510

0.713555346237 14.0263174291 306 698

0.637399405203 13.3270555599 799 540

练习 随机序列中的元素

脚本内容

$ cat random-example-2.py

#File : random-example-2.py

import random

for i in range(5):

print random.choice([1,2,3,5,9])

执行结果

$ python random-example-2.py

2

2

2

5

9

练习 洗牌

脚本内容

$ cat random-example-4.py

#File : random-example-4.py

import random

try:

shuffle=random.shuffle

except AttributeError:

def shuffle(x):

for i in xrange(len(x)-1,0,-1):

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

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

cards=range(52)

shuffle(cards)

myhand=cards[:5]

print myhand

执行结果

$ python random-example-4.py

[20, 44, 17, 14, 0]

$ python random-example-4.py

[8, 17, 27, 13, 42]

练习 高斯随机数

脚本内容

$ cat random-example-3.py

#File : random-example-3.py

import random

histogram=[0]*20

for i in range(25):

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

histogram[i]=histogram[i]+1

m=max(histogram)

for v in histogram:

print "*" * (v * 50 / m)

执行结果

$ python random-example-3.py

******

******

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

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

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

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

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

******

python基础教程_学习笔记16:标准库:一些最爱——random

时间: 2024-10-01 23:25:51

python基础教程_学习笔记16:标准库:一些最爱——random的相关文章

python基础教程_学习笔记15:标准库:一些最爱——fileinput

标准库:一些最爱 fileinput 重要的函数 函数 描述 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 lineno() 返回当前(累计)的名称 filelineno() 返回当前文件的行数 isfirstline() 检查当前行是否是文件的第一行 isstdin() 检查最后一行是否来自sys.stdin nextfile() 关闭当前文件,移动到下一个文件 close() 关闭序列 fileinput

python基础教程_学习笔记14:标准库:一些最爱——re

标准库:一些最爱 re re模块包含对正则表达式的支持,因为曾经系统学习过正则表达式,所以基础内容略过,直接看python对于正则表达式的支持. 正则表达式的学习,见<Mastering Regular Expressions>(精通正则表达式) re模块的内容 最重要的一些函数 函数 描述 compile(pattern[,flags]) 根据包含正则表达式的字符串创建模式对象 search(pattern,string[,flags]) 在字符串中寻找模式 match(pattern,st

python基础教程_学习笔记20:标准库:一些最爱——os

标准库:一些最爱 os os模块为你提供了访问多个操作系统服务的功能. os和它的子模块os.path还包括一些用于检查.构造.删除目录和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和变量 函数/变量 描述 environ 对环境变量进行映射 system(command) 在子shell中执行操作系统命令 sep 路径中的分隔符 pathsep 分隔路径的分隔符 linesep 行分隔符('\n','\r','\r\n') urandom(n) 返回n字节的加密强随机数据 os

python基础教程_学习笔记17:标准库:一些最爱——time

标准库:一些最爱 time time模块所包含的函数能够实现以下功能: 获取当前时间.操作系统时间和日期.从字符串读取时间以及格式化时间为字符串. 日期可以用实数(从"新纪元"的1月1日0点开始计算到现在的秒数,新纪元是一个与平台相关的年份,对unix来说是1970年),或者是包含有9个整数的元组. 日期元组的字段含义 如元组: (2008,1,21,12,2,56,0,21,0) 表示2008年1月21日12时2分56秒,星期一,且是当年的第21天(无夏令时). 索引 字段 值 0

python基础教程_学习笔记13:标准库:一些最爱——sys

标准库:一些最爱 sys sys这个模块让你能够访问与python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描述 argv 命令行参数,包括脚本名称 exit([arg]) 退出当前程序,可选参数为给定的返回值或者错误信息 modules 映射模块名字到载入模块的字典 path 查找模块所在目录的目录名列表 platform 类似sunos5或者win32的平台标识符 stdin 标准输入流--一个类文件对象 stdout 标准输出流--一个类文件对象 stde

python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列

标准库:一些最爱 集合.堆和双端队列 集合 集合Set类位于sets模块中. >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> set(range(10)) set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 集合是由序列(或其他可迭代的对象)构建的.主要用于检查成员资格,因此,副本是被忽略的: >>> range(10)*2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9

python基础教程_学习笔记18:标准库:一些最爱——shelve

标准库:一些最爱 shelve Shelve唯一有趣的函数是open.在调用它的时候(使用文件名作为参数),它会返回一个Shelf对象,可以用它来存储内容.只需要把它当作普通的字典(但是键一定要作为字符串)来操作即可,在完成工作之后,调用它的close方法. 意识到shelve.open函数返回的对象并不是普通的映射是很重要的. >>> import shelve >>> s=shelve.open('a.txt') >>> s['x']=['a','

python基础教程_学习笔记7:条件、循环、其它语句

条件.循环.其它语句 print和import 随着更加深入地学习python,可能会出现这种感觉:有些自以为已经掌握的知识点,还隐藏着一些让人惊讶的特性. 使用逗号输出 打印多个表达式,只要将这些表达式用逗号隔开即可: >>> print "age:",28 age: 28 参数之间都插入了一个空格符. 如果在结尾加上逗号,那么接下来的语句会与前一条语句在同一行打印: print "Hello,", print "World!"

python基础教程_学习笔记23:图形用户界面

图形用户界面 丰富的平台 在编写Python GUI程序前,需要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合,可以通过叫做GUI工具包的给定Python模块进行访问. 工具包 描述 Tkinter 使用Tk平台.很容易得到.半标准. wxpython 基于wxWindows.跨平台越来越流行. PythonWin 只能在Windows上使用.使用了本机的Windows GUI功能. JavaSwing 只能用于Jython.使用本机的Java GUI. PyGTK 使用GTK