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

 

 

 

 

 

 

******

******

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

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

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

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

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

 

******

 

 

 

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

signjing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值