09.3.1 简介
使用随机数的python标准库,用于产生随机数
09.3.2 函数
基本随机数函数
+ seed() :给随机数对象一个种子值,用于产生随机序列,完全相同的种子产生的随机数列是相同的,所以如果想产生不同的随机数就需要用当前时间作为种子
random.seed(0)
print "Random number with seed 0 : ", random.random()
random.seed(0)
print "Random number with seed 0 : ", random.random()
random.seed(0)
print "Random number with seed 0 : ", random.random()
>Random number with seed 0 : 0.844421851525
>Random number with seed 1 : 0.844421851525
>Random number with seed 2 : 0.844421851525
random.seed(0)
print "Random number with seed 0 : ", random.random()
random.seed(1)
print "Random number with seed 1 : ", random.random()
random.seed(2)
print "Random number with seed 2 : ", random.random()
>Random number with seed 0 : 0.844421851525
>Random number with seed 1 : 0.134364244112
>Random number with seed 2 : 0.956034271889
+ random():生成一个[0.0,1.0)之间的随机小数
扩展随机数函数
+ randint(a,b):生成一个a~b之间的整数
import random
n = random.randint(10,100)
print(n)
>42
+ randrange(m, n[, k]):生成一个[m,n]之间以k为步长的随机整数
import random
n = random.randrange(10,100,10)
print(n)
>60
+ getrandbits(k):生成一个k比特长的随机整数
import random
n = random.getrandbits(10)
print(n)
>713
+ uniform(a,b):生成一个[a,b]之间的随机小数
import random
n = random.uniform(10,100)
print(n)
>14.641504182041913
+ choice(seq):从序列seq中随机选择一个元素
import random
n = random.choice([1,2,3,4,5,6,7,8,9,0,])
print(n)
>6
+ shuffle(seq):打乱序列并重新排列
import random
l=[1,2,3,4,5,6,7,8,9,0]
random.shuffle(l)
print(l)
>[3, 4, 1, 8, 0, 6, 7, 2, 5, 9]
09.3.3 圆周率的计算
根据公式计算
import random
pi = 0
n = 1000
for i in range(n):
pi +=1/pow(16,i)*\
(4/(8*i+1)-2/(8*i+4)-\
1/(8*i+5)-1/(8*i+6))
print('圆周率的值是:{:.10f}'.format(pi))
>圆周率的值是:3.1415926536
随机概率计算方法
from random import random
from time import perf_counter
s =1000*1000
n = 0
start = perf_counter()
for i in range(1,s+1):
x,y=random(),random()
l = pow(x**2+y**2,0.5)
if l <= 1:
n += 1
pi = 4*(n/s)
print('圆周率的值是:{}'.format(pi))
print('运行时间是:{:.5f}s'.format(perf_counter()-start))
>圆周率的值是:3.138736
>运行时间是:2.67644s