python学习笔记(8)--random库的使用

伪随机数:采用梅森旋转算法生成的伪随机序列中元素

使用random库

一、基本随机函数

随机数需要一个种子,依据这个种子通过梅森旋转算法产生固定序列的随机数。
seed(a=None)  初始化给定的随机数种子,默认为当前系统时间

random()   生成一个[0.0,1.0)之间的随机小数

>>> import random
>>> random.seed(5)
>>> random.random()
0.6229016948897019
>>> random.random()
0.7417869892607294
>>> random.seed(5)
>>> random.random()
0.6229016948897019

使用seed主要是在某些系统各种,根据这个随机种子,可以复现问题,如果不使用种子,则默认为当前系统的精度很大的时间,这个无法再重现。

二、扩展随机函数

randint(a,b)             生成一个[a,b]之间的整数

randrange(m,n[,k])  生成一个[m,n)之间以k为步长的随机整数

getrandbits(k)         生成一个k比特长的随机整数

uniform(a,b)           生成一个[a,b]之间的随机小数

choice(seq)            从序列seq中随机选择一个元素

shuffle(seq)           将序列seq中元素随机排列,返回打乱后的序列

>>> random.randint(0,100)
94
>>> random.randrange(0,100,10)
50
>>> random.uniform(0,100)
69.04468457583359
>>> random.getrandbits(16)
52113
>>> random.choice([1,2,3,4,5,6,7])
7
>>> s=[1,2,3,4,5,6,7]
>>> random.shuffle(s)
>>> s
[4, 3, 5, 7, 2, 1, 6]

三、圆周率计算问题

圆周率的计算,除了使用一个复杂的数学公式外,还可以通过计算机来模拟最初圆周率的计算方法蒙特卡罗方法。蒙特卡罗方法是指随机的在这个圆所在的正方形中撒粒子,然后计算圆中粒子的个数,依次来计算圆的面积,或者圆周率。那么现在计算机这个聪明,我们就可以通过计算机来模拟随机粒子,来计算圆周率。代码如下:

#getPi.py
from random import random
from time import perf_counter
DARTS = 1000*1000
hits=0.0
start=perf_counter()
for i in range(1,DARTS):
     x, y = random(),random()
     dist = pow(x**2 + y**2, 0.5)
     if dist <= 1.0:
           hits +=1
pi = 4 *(hits/DARTS)
print("圆周率是:{}".format(pi))
print("运行时间为:{:.5f}s".format(perf_counter() - start))

猜你喜欢

转载自www.cnblogs.com/xingmuxin/p/8917289.html