numpy.random.seed(seed=None) :可以使生成的随机数相同
seed值有效次数只有一次,如果要保证每次随机数的值都相同,要在调用之前再次使用seed函数
np.random.seed(1) x=np.random.randint(1,10,5) [6 9 6 1 1] 假设我不使用seed函数 x=np.random.randint(1,10,5) [2 8 7 3 5] 当我使用时 np.random.seed(1) x=np.random.randint(1,10,5) [6 9 6 1 1]离散型随机变量
二项分布
用于只有一次实验只有两种结果,各结果对应的概率相等的多次实验的概率问题
np.random.binomial(n, p, size)
n:做了n重伯努利试验,做某件事的次数
p:成功的概率
size:做该实验的次数
模拟投硬币,投2次,请问两次都为正面的概率 n = 2 做某件事情的次数,这里是投两次硬币 p = 0.5做某件事情成功的概率,在这里即投硬币为正面的概率 size = 50000 进行了50000的实验 x = np.random.binomial(n, p, size) x=0:意味着在这一次实验中,投了两次硬币,结果均为反面 x=1,x=2同理 np.sum(x == 2) / size 计算得最终概率
泊松分布
用于估计某个时间段某事件发生的概率
np.random.poisson(lam, size)
lam:单位内发生事件的均值
size:做该实验的次数,采样次数
返回值:一个单位内事件发生的次数
假定某航空公司预定票处平均每小时接到42次订票电话,那么10分钟内恰好接到6次电话的概率是多少 lam = 42/6 size = 5 x = np.random.poisson(lam, size) [10 7 6 6 3]十分钟内接到电话的次数
超几何分布
各次实验不是独立的,各次实验成功的概率也不等
np.random.hypergeometric(ngood, nbad, nsample, size=None)
ngood:总体中成功的元素个数
nbad:总体中失败的元素个数
nsample:抽取元素的次数(<=总量)
size:采样次数
返回值:nsample中成功元素的个数
均匀分布
np.random.uniform(low,high,size=)
均匀分布于半开区间[low, high)
正态分布
np.random.randn(size)
根据指定大小产生满足标准正态分布的数组(均值为0,标准差为1)
指数分布
用于表示:时间发生的时间长度间隔
np.random.exponential(scale=, size)
从指数分布中抽取样本
lam = 7 size = 10 x = np.random.exponential(1 / lam, size) [0.1111193 0.2071766 0.00662943 0.0215405 0.2245942 0.00432206 0.30666491 0.11117767 0.08488162 0.31812613] y = (np.sum(x < 1 / 7)) / size 0.6其他随机函数
np.random.choice:随机从序列中获取元素
np.random.choice(a, size=None, replace=True, p=None)
a:若为整数则相当于从np.range(a)中随机获取元素
size:获取的数量
replace:是否重复获取
p:元素被选取的概率
x = np.random.choice(10, 3) print(x) # [2 0 1] x = np.random.choice(10, 3, p=[0.05, 0, 0.05, 0.9, 0, 0, 0, 0, 0, 0]) print(x) # [3 2 3] x = np.random.choice(10, 3, replace=False, p=[0.05, 0, 0.05, 0.9, 0, 0, 0, 0, 0, 0]) print(x) # [3 0 2]
np.random.shuffle:对数据集进行洗牌操作
x = np.arange(10) [0 1 2 3 4 5 6 7 8 9] np.random.shuffle(x) [6 2 3 0 1 9 5 8 7 4] 注:如果x为多维数组,只沿第 0 轴洗牌,改变原来的数组,输出为None print(np.random.shuffle(np.arange(10))) None



