目录

  • random库介绍
  • seed()函数
  • random()函数
  • randint()函数
  • randrange()函数
  • uniform()函数
  • choice()函数
  • shuffle()函数
  • getrandbits()函数
  • numpy中的random函数
  • 批量产生随机数
  • np.random.normal(loc=0.0, scale=1.0, size=None)
  • 注意区分两者不同


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)

np.random.normal(loc=0.0, scale=1.0, size=None)

生成高斯分布的概率密度随机数

loc:float
此概率分布的均值(对应着整个分布的中心centre)
scale:float
此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints
输出的shape,默认为None,只输出一个值💥(这个很重要!需要几个随机数,size就写几,否则就生成一个数分别加到nparray里了…)

注意区分两者不同

两个库中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])