Python random库函数

random库介绍

random库用于生成伪随机数,包含两类函数。常用的有8个:
基本随机函数: seed(), random()
扩展随机函数:randint(), uniform(), randrange(), choice(), shuffle(), getrandbits()

seed()函数

改变随机数生成器的种子,若不提供参数则默认使用当前系统时间。
注意:本函数没有返回值。

import random

print (random.random())
print (random.random())
for i in range(3):
    random.seed(0)
    print (random.random())

结果如下,同一种子产生的随机数序列是相同的,即随机数可以复现。

0.9669973055076426
0.17528634506952256
0.8444218515250481
0.8444218515250481
0.8444218515250481

下例能更好地展示随机数序列的性质,在相同种子的情况下完全一致(另外由于算法实际上产生的是伪随机数,在大约几万位后会发生重复,进入与前面位相同的循环。 )。seed设置后只生效一次,再使用要重新设置。

>>> random.seed(2) 
>>> [%.2f% random.random() for i in range(7)] 
[0.96,0.95,0.06,0.08,0.84,0.74,0.67] 
>>> [%.2f% random.random() for i in range(7)] 
[0.31,0.61,0.61,0.58,0.16,0.43,0.39]

>>> random.seed(2) 
>>> [%.2f% random.random() for i in range(7)] 
[0.96,0.95,0.06,0.08,0.84,0.74,0.67]

random()函数

产生[0,1)之间的随机浮点数

randint()函数

产生[a,b]中一个整型随机数
print(random.randint(a,b))

randrange()函数

生成一个[m,n)之间以k为步长的随机整数
print(random.randrange(1,100,2)) #生成从1到100的间隔为2的随机整数

uniform()函数

生成一个[a,b]之间的随机小数
print(random.uniform(2,7.3)) #产生2到7.3之间的随机浮点数,区间可以不是整数

choice()函数

在字符串中选出随机字符
print (random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()'))

shuffle()函数

把给定列表中的元素打乱顺序

items = [1,2,3,4,5,6,7,8,9,0]
print (random.shuffle(items))
#输出结果是乱序的数字

getrandbits()函数

生成给定比特长的随机整数

>>>random.getrandbits(16)
输出结果:37885

numpy中的random函数

批量产生随机数

random库中函数每次只能生成单个随机数,而使用numpy库可以批量产生随机数。用法如下

from numpy import random
r=random.random()
r=random.random(size=10000)
r=random.uniform(-1,10)
r=random.uniform(-1,10,size=1000)

注意区分两者不同

两个库中randint()函数生成整数的范围不同!
numpy库中与原函数有相同功能的函数是numpy.random.random_integers(该函数在最新的numpy版本中已被替代,建议使用randint函数)

>>> import random
>>> r = random . randint (1, 5) # 1 <= r <= 5
>>> import numpy as np
>>> r = np. random . randint (1, 5, 10)
>>> r # 1 <= r < 5
array ([2 , 3, 2, 1, 1, 2, 2, 4, 4, 3])

猜你喜欢

转载自blog.csdn.net/qq_45268474/article/details/105548537