python-random

python-random

random作为python自带的模块,无需下载即可直接使用。import random导入该模块。

初始化随机数

random.seed(a)

初始化随机数生成器 随机数种子, a(int) ,默认是 None ,表示当地时间

整数用函数

random.randrange()

random.randrange(start, stop[, step])
"""
从 range(start, stop, step) 返回一个随机选择的元素。 这相当于 choice(range(start, stop, step)) ,但实际上并没有构建一个 range 对象。
返回参数
在 [start,stop] 内随机整数, 包括start,不包括stop 
"""

# 和 np.arange 一样有三种输入方式

# 输入end,  默认0 开始
print(random.randrange(5))   	#  2

#  输入 start,end
print(random.randrange(1,5))	#  2

# 输入 start,end,step
print(random.randrange(2,5,2))	# 4

# 案例
# 随机生成0-20之间的偶数
print("randrange(0, 21, 2):", random.randrange(0, 21, 2))

random.randint(a, b)

随机生成a,b之间的整数
random.randint(a,b)
"""
输入参数
a      整数左起点  必须
b	   整数右终点  必须 

Note   a<=b, 可以相等   

返回参数  [a,b] 内随机整数  包括a, 包括b, 相当于randrange(a,b+1)
"""
print(random.randint(1,1))		# 1

print(random.randint(1,10))		# 4

浮点数用函数

random.random()

random()函数可以随机生成一个[0,1)的浮点数,包括0,不包括1

# 随机生成[0.1)的浮点数
import random
print(random.random())
#  0.0683854446391301

random.uniform( )

random.uniform(x, y)方法将随机生成一个实数,它在[x,y]范围内

  • x -- 随机数的最小值,包含该值。
  • y -- 随机数的最大值,不包含该值。
  • 返回一个浮点数

# 随机生成0-20之间的浮点数
print("uniform(0, 20):", random.uniform(0, 20))

序列用函数

random.choice()

从非空序列 seq 中随机选取一个数据并返回,该序列可以是list、tuple、str、set。如果 seq 为空,则引发 IndexError。

random.choice(seq)
# 从序列中随机选择一个元素

list_string = ['a', 'b', 'c', 'd', 'e']
print("choice(list):", random.choice(list_string))
# output  choice(list): b

print("choice(string):", random.choice('abcd'))
# output  choice(string): d

random.chocies()

从集群中随机选取k次数据,返回一个列表,可以设置权重。

每次选取都不会影响原序列,每一次选取都是基于原序列。

random.choices(population,weights=None,*,cum_weights=None,k=1)

  • population:集群。
  • weights:相对权重。
  • cum_weights:累加权重。
  • k: 选取次数 k 可以大于len(population)
random.choices(population, weights=None, *, cum_weights=None, k=1)
"""
- population:集群。
- weights:相对权重。
- cum_weights:累加权重。
- k:选取次数。

参数weights设置相对权重,它的值是一个列表,设置之后,每一个成员被抽取到的概率就被确定了。
比如weights=[1,2,3,4,5],那么第一个成员的概率就是P=1/(1+2+3+4+5)=1/15。

cum_weights设置累加权重,Python会自动把相对权重转换为累加权重
比如weights=[1,2,3,4],那么cum_weights=[1,3,6,10]
weights 和 cum_weights 不能同时出现
"""

import random

a = [1,2,3,4,5]
print(random.choices(a,k=6))   # 解析:重复6次从列表a中的各个成员中选取一个数输出,各个成员出现概率基本持平。

# out [5, 4, 5, 4, 1, 3]

print(random.choices(a,weights=[0,0,1,0,0],k=6)) # 重复6次从列表a中提取3,最终得到[3, 3, 3, 3, 3, 3]
# out [3, 3, 3, 3, 3, 3]

print(random.choices(a,weights=[1,1,1,1,1],k=6)) # 重复6次从列表a中的各个成员中选取一个数输出,各个成员出现概率基本持平。
# out [5, 4, 3, 5, 4, 3]

print(random.choices(a,cum_weights=[1,1,1,1,1],k=6))
# 结果:[1, 1, 1, 1, 1, 1](固定结果)


random.shuffle()

# 对列表元素随机排序
list_number = [1, 2, 3, 4, 5]
random.shuffle(list_number)
print("shuffle(list):", list_number)
Node: random.shuffle千万不要用于二维numpy.array(也就是矩阵)

import random
import numpy as np
a = np.array([[1,2,3,4],
              [5,6,7,8]])
random.shuffle(a)
print(a)
# out [[1 2 3 4],[1 2 3 4]]

# 多维矩阵
import numpy as np
arr = np.arange(9).reshape((3, 3))
np.random.shuffle(arr)
print(arr)
# 多维矩阵中,只对第一维(行)做打乱顺序操作):

random.sample()

返回从总体序列或集合中选择的唯一元素的 k 长度列表。 用于无重复的随机抽样

不会重复选取

random.sample(population, k)

  • population: 集群。
  • k: 选取次数 k 小于等于 len(population)
choices sample 的 区别

list_string = ['a', 'b', 'c', 'd', 'e']

print(random.choices(list_string,k=3))
print(random.sample(list_string, k=3))
# out ['c', 'a', 'c']
# out ['c', 'a', 'b']

print(random.choices(list_string,k=6))
# out ['b', 'a', 'c', 'e', 'c', 'c']
print(random.sample(list_string, k=6))
# 报错 ValueError

其他函数

方法 描述
betavariate() 根据Beta分布(在统计中使用)返回0到1之间的随机浮点数
expovariate() 根据指数分布(在统计中使用),返回0到1之间的随机浮点数,如果参数为负,则返回0到-1之间的随机浮点数
gammavariate() 根据Gamma分布返回0到1之间的随机浮点数(用于统计)
gauss() 根据高斯分布(在概率理论中使用)返回0到1之间的随机浮点数
lognormvariate() 根据对数正态分布返回0到1之间的随机浮点数(用于概率论)
normalvariate() 根据正态分布返回0到1之间的随机浮点数(用于概率论)
vonmisesvariate() 根据von Mises分布(在方向统计中使用)返回0到1之间的随机浮点数
paretovariate() 根据Pareto分布返回0到1之间的随机浮点数(用于概率论)
weibullvariate() 根据Weibull分布返回0到1之间的随机浮点数(在统计中使用)

可以参考官方文档

posted @ 2021-06-24 22:29  贝壳里的星海  阅读(327)  评论(0编辑  收藏  举报