Python模块之Random模块

random —— 生成伪随机数,该模块为各种分布实现伪随机数生成器。我们来看看random模块常用的几个函数的介绍:

一、针对整数的方法:

random.randrange(stop)

random.randrange(start, stop[, step])
等同于choice(range(start, stop, step)),但不实际创建range对象。

>>> import random
>>> print(random.randrange(4))         #返回0~3的随机整数
1
>>> print(random.randrange(1, 9))       #返回1~8的随机整数
8
>>> print(random.randrange(1, 11, 2))    #返回1~10的随机奇数
3

random.randint(a, b)
返回一个随机整数N,a <= N <= b, 等同于randrange(a, b+1)。

>>> print(random.randint(1, 10))        #返回[1, 10]的随机整数
8
>>> print(random.randint(-10, -1))      #返回[-10, -1]的随机整数,不能写成random.randint(-1, -10)
-5

二、针对序列的方法:
random.choice(seq)
从非空序列中返回一个随机元素,如果序列为空,则引发IndexError。

>>> print(random.choice('BHasdgiHUI1234'))   #返回一个字符
I
>>> print(random.choice(['apple', 'peach', 'pear']))   #返回列表中一个随机一个元素
pear
>>> print(random.choice(('Bob', 'Jhon', 'Micheal')))  #返回元组中一个随机元素
Jhon

random.choices(population, weight=None, *, cum_weight=None, k=1)
从可替代的population序列中随机取出k个元素组成列表,返回该列表。weight是相对权重序列,cum_weight是累计权重,同时制定权重weight和累计权重cum_weight,会产生类型错误。

>>> print(random.choices(['red', 'yellow','green', 'blue', 'black', 'pink', 'purple', 'white'], k=4))  
['red', 'red', 'purple', 'black']
>>> print(random.choices(['apple', 'peach', 'pear'], [1, 2, 3], k=4))
['pear', 'pear', 'pear', 'peach']
>>> print(random.choices(['apple', 'peach', 'pear'], [6, 12, 2], k=4))
['peach', 'peach', 'pear', 'pear']

random.shuffle(x [,random])
重新排列序列(洗牌)

>>> seq = ['red1','yellow2','blue3', 'green4' ]
>>> random.shuffle(seq)    #列表重新排序
>>> print(seq)
['red1', 'blue3', 'green4', 'yellow2']

random.sample(population, k)
返回一个从序列population中随机抽取K个不重复的元素组成的新队列。用于不可替换的随机抽样。返回一个新的列表,不破坏原有列表。如果新队列的长度k大于原队列population的长度,则会引发ValueError错误。

>>> print(random.sample(['a', 'b', 'c', 'd', 'e', '1', '2', '3'], 2))  #列表中随机抽取2个元素组成新的列表
['d', 'b']
>>> print(''.join(random.sample("ahoiNUAI483*4", 4)))  
UohI

三、真值分布:

random.random()
返回一个随机的浮点数,范围[0, 1)

>>> print(random.random())
0.5867129667371662

random.uniform(a, b)
返回一个a和b之间的随机浮点数,如果a>b,则返回b和a之间的浮点数。a和b都可能出现在结果中。

>>> print(random.uniform(1, 10))
5.961863773592117
>>> print(random.uniform(2,6))
3.2723769810535543

猜你喜欢

转载自www.cnblogs.com/Grace-gao/p/10956226.html