<
>

Python random库函数

2020-07-28 19:27:18 来源:易采站长站 作者:

目录random库介绍seed()函数random()函数randint()函数randrange()函数uniform()函数choice()函数shuffle()函数getrandbits()函数numpy中的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 >> 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])


作者:hover_load

暂时禁止评论

微信扫一扫

易采站长站微信账号