python中常用的随机函数的用法汇总分类以及相似函数之间的区别:
一图了解python的随机函数
1. random.random(): 返回随机生成的一个浮点数,范围在[0,1)之间
2. random.uniform(a, b): 返回随机生成的一个浮点数,范围在[a, b)之间
3. np.random.rand(d0, d1, …, dn): 返回一个或一组浮点数,范围在[0, 1)之间
4. np.random.normal(loc=a, scale=b, size=()): 返回满足条件为均值=a, 标准差=b的正态分布(高斯分布)的概率密度随机数
5. np.random.randn(d0, d1, … dn): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数
6. np.random.standard_normal(size=()): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数
7. random.sample(k): 从总体序列或集合中随机选取k个唯一的元素
8. np.random.randint(a, b, size=(), dtype=int): 返回在范围在[a, b)中的随机整数(含有重复值)
9. random.randrange(a, b, step=c): 在指定范围内,在指定的基数和步长值形成的集合中获取1个随机数值
10. random.choice(x): 从指定的序列x中随机获取一个数据
11. random.shuffle(x): 将一个列表x中的元素打乱,随机排序(俗称:洗牌)
12. random.seed(): 设定随机种子
1. random.random() - 返回随机生成的一个浮点数,范围在[0,1)之间
import numpy as np
import pandas as pd
import random
# 随机生成一个在[0, 1)范围的浮点数
x = random.random()
print(x, type(x))
0.5714025946899135
2. random.uniform(x, y) - 返回随机生成的一个浮点数,范围在[x, y)之间
# 随机生成一个在[15.0, 20.0)之间的浮点数
x = random.uniform(15.0, 20.0)
print(x, type(x))
17.144445273375574
3. np.random.rand(d0, d1, …, dn) - 返回一个或一组浮点数,范围在[0, 1)之间
x = np.random.rand()
y = np.random.rand(2)
print(x, type(x))
print(y, type(y))
小结:np.random.rand()的用法与random.random()相似,都是返回范围在[0, 1)之间的随机浮点数。唯一不同的是,random.random()只能返回一个随机数;而np.random.rand()则可以根据设置返回多个数据。
4. np.random.normal() - 返回正态分布(高斯分布)的概率密度随机数
# np.random.normal(loc=a, scale=b, size=()) - 返回满足条件为均值=a, 标准差=b的正态分布(高斯分布)的概率密度随机数,size默认为None(返回1个随机数),也可以为int或数组
x = np.random.normal(10, 0.2, 2)
y = np.random.normal(0, 0.1, (2, 3))
print(x, type(x))
print(y, type(y))
5. np.random.randn() - 返回标准正态分布的概率密度随机数
# np.random.randn(d0, d1, ... dn): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数,
x = np.random.randn()
y = np.random.randn(3)
z = np.random.randn(2, 2)
print(x, type(x))
print(y, type(y))
print(z, type(z))
6. np.random.standard_normal() - 返回标准正态分布的概率密度随机数
# np.random.standard_normal(): 返回标准正态分布(均值=0,标准差=1)的概率密度随机数, size默认为None(返回1个随机数),也可以为int或数组
x = np.random.standard_normal()
y = np.random.standard_normal(size=(2,2))
print(x, type(x))
print(y, type(y))
小结:上述可见np.random.rand()与np.random.standard_normal()的方法结果相似,都是返回合符标准正态分布的随机浮点数或数组。
7. random.sample(k) - 在总体序列或集合中返回k个唯一的随机元素(不包含重复值)
# 从0-10的序列中返回5个不重复的随机数字
x = random.sample(range(0, 10), 5)
print(x, type(x))
[9, 0, 6, 3, 4]
8. np.random.randint(a, b, size=(), dytpe=int) - 返回在范围在[a, b)中的一组随机整数(包含重复值)
# np.random.randint(a, b, sizie=(), dytpe=int) - size默认为None(返回1个随机数),也可以为int或数组
# 从序列[0, 10)之间返回shape=(2,5)的10个随机整数(包含重复值)
x = np.random.randint(0, 10, size=(2, 5))
# 从序列[15, 20)之间返回1个随机整数(size默认为None, 则返回1个随机整数)
y = np.random.randint(15, 20)
print(x, type(x))
print(y, type(y))
小结:random.sample()与np.random.randint()的最大区别在于,random.sample()返回的是唯一的随机元素,即不含有重复值;而np.random.randint()是返回含有重复值的随机数值。
9. random.randrange(a, b, step=c) - 在指定范围内,在指定的基数和步长值形成的集合中获取1个随机数值
# 在[6, 16]范围内,在6的基础上按步长=3形成的递增集合中获取1个随机数
x = random.randrange(6, 16, 3)
print(x, type(x))
15
10. random.choice(x) - 从指定的序列x中随机获取一个数据
# 从x列表中随机返回一个数值
x = [100, 20, 90, 5, 12]
print(random.choice(x))
90
11. random.shuffle(x) - 将一个列表x中的元素打乱,随机排序(俗称:洗牌)
# 将x列表中的元素打乱并重新随机排序
x = [1, 2, 3, 4, 5]
random.shuffle(x)
print(x)
[3, 4, 2, 1, 5]
12. random.seed() - 设定随机种子
# 在设定随机种子为10之后,random.random()的随机数将被直接设定为:0.5714025946899135
random.seed(10)
x = random.random()
x
0.5714025946899135
总结上述随机函数的相似或区别地方: