用python处理数据(三)—— numpy随机数

Python numpy随机数生成指南
本文介绍了使用numpy的random模块生成连续和非连续分布的随机数。内容涵盖二项式分布和正态分布的模拟,其中二项式分布用于模拟抛硬币游戏,正态分布则基于概率密度函数建模。利用size参数可以创建不同形状的随机数数组。
numpy随机数

主要用的是random模块
我们既可以生成连续分布的随机数,也可以生成非连续分布的随机数。分布函数有一个可选的size参数,它能通知numpy要创建多少个数字。我们可以用整型或者元组来给这个参数赋值,这时会得到相应形状的数组,其值由随机数填充。离散分布包括几何分布,超几何分布。连续分布包括正态分布和对数正态分布。
二项式分布
假设现在我手上有1000个硬币,一次扔9枚,如果人头朝上多于5个,我就赢了一个硬币;反之则输一个硬币
用binomial()函数进行模拟

import numpy as np
from matplotlib.pyplot import plot,show

#将binomial()函数的size设为10000,表示我们将投10000次硬币
cash=np.zeros(10000)  
cash[0]=1000  
outcome=np.random.binomial(9,0.5,size=len(cash))

#更新剩余的现金
for i in range(1,len(cash)):
    if outcome[i]<5:
        cash[i]=cash[i-1]-1
    elif outcome[i]<10:
        cash[i]=cash[i-1]+1
    else:
        raise AssertionError("Unexpectedd outcome"+outcome)
print(outcome.min(),outcome.max())

#用matplotlib画出cash数组图像
plot(np.arange(len(cash)),cash)
show()

这里写图片描述

正态分布
连续分布是通过pdf(概率密度函数)进行建模的。在特定区间发生某事件的可能性可以通过概率密度函数的积分运算求出。

import numpy as np
import matplotlib.pyplot as plt

#借助normal()函数创造指定数量的随机数
N=10000
normal_values=np.random.normal(size=N)

#画图,这里中心值为0,标准差为1;
dummy,bins,dummy=plt.hist(normal_values,int(np.sqrt(N)),normed=True,lw=1)
sigma=1
mu=0
plt.plot(bins,1/(sigma*np.sqrt(2*np.pi))*np.exp(-(bins-mu)**2/(2*sigma**2)),lw=2)
plt.show()

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值