import numpy as np import matplotlib.pyplot as plt np.random.seed(0) mu, sigma = 100,20 a = np.random.normal(mu,sigma, size=100) plt.hist(a,20, normed=0, histtype='stepfilled', facecolor='b',alpha=0.75) plt.title('Histogram') plt.show()
时间: 2024-04-03 13:34:12 浏览: 10
这段代码使用了numpy和matplotlib.pyplot库来生成一个正态分布的随机数列,并绘制了该数据的直方图。其中,np.random.seed(0)是设置了随机数的种子,使得每次运行程序生成的随机数序列是一样的;mu和sigma分别是正态分布的均值和标准差;np.random.normal(mu,sigma,size=100)则是生成了一个大小为100的正态分布的随机数列;plt.hist()用于绘制直方图,20表示将数据分成20个区间,normed=0表示直方图的y轴表示数据出现的次数,而不是频率;histtype='stepfilled'表示直方图的样式为填充式;facecolor='b'表示填充的颜色为蓝色,alpha=0.75表示填充的透明度为0.75;plt.title()用于设置图表的标题,plt.show()则是将图表显示出来。
相关问题
一个常用的股票价格变化数学模型可以用以下差分方程表示: x n =x n−1 +Δtμx n−1 +σx n−1 Δt r n−1 (1) 其中 x n 是 t n 时刻的股票价格,Δt 是两个时间之间的间隔(Δt=t n -t n-1 ),μ 是股票价格的增长率,σ 是股票价格的波动率,r 0 ,...,r n-1 是正态分布的随机数(均值为 0,标准差为单位标准差)。股票的初始价格 x 0 和μ,σ,Δt 都作为输入数据。 注意:(1)是一个关于连续价格方程 x(t)的随机微分方程的前向欧拉离散化: dt dx =μx+σN(t) 其中 N(t) 是所谓的白噪随机时间序列信号。这样的方程在股票价格的模拟中占有中心地位。请你用 Python 实现(1)。假设 n=0, …, N(N=5000步),时间 T=180 天,步长 Δt=T/N。 请根据提示,在右侧编辑器补充代码,完成函数编写,通过随机游走模拟股票价格,并绘图。import numpy numpy.random.seed(10) import matplotlib.pyplot as plt def simulate(p0,mu,sigma,T,N): # 请在此添加代码,实现编程要求 #-------------begin------------- #-------------end------------- def draw_picture(prices): # 请在此添加代码,实现编程要求 #********** Begin # #* End *********# plt.savefig('src/step4/student/result.png') N=5000; T=180; x0=10 prices = simulate(x0,0.01,0.03,T,N) draw_picture(prices)要求: 横轴为模拟步数,坐标轴范围为[-100,5200];纵轴为股票价格,坐标轴范围为[8,29]; 图片大小设为 84 (单位为 inch); 存储输出图像,图像路径及名字为 src/step4/student/result.pn
import numpy as np
np.random.seed(10)
import matplotlib.pyplot as plt
def simulate(p0,mu,sigma,T,N):
prices = np.zeros(N+1)
prices[0] = p0
dt = T/N
for i in range(1,N+1):
r = np.random.normal(0, 1)
prices[i] = prices[i-1] + dt*mu*prices[i-1] + sigma*prices[i-1]*np.sqrt(dt)*r
return prices
def draw_picture(prices):
N = len(prices)-1
T = 180
steps = np.linspace(0, T, N+1)
plt.figure(figsize=(84,6))
plt.plot(steps, prices)
plt.xlabel('Steps')
plt.ylabel('Stock price')
plt.xlim(-100, 5200)
plt.ylim(8, 29)
plt.savefig('src/step4/student/result.png')
N = 5000
T = 180
x0 = 10
prices = simulate(x0, 0.01, 0.03, T, N)
draw_picture(prices)
通过增加或者减少一组固定数据里的值,使得这组数据服从对数正态分布的python代码
要使一组固定数据服从对数正态分布,你可以通过以下步骤进行:
1. 导入所需的库:
```python
import numpy as np
import matplotlib.pyplot as plt
```
2. 生成原始数据:
```python
np.random.seed(0) # 设置随机种子以确保结果可复现
data = np.random.normal(size=1000) # 生成原始数据
```
3. 计算原始数据的对数:
```python
log_data = np.log(data)
```
4. 计算对数数据的均值和标准差:
```python
mu = np.mean(log_data)
sigma = np.std(log_data)
```
5. 生成服从对数正态分布的数据:
```python
log_normal_data = np.random.lognormal(mu, sigma, size=1000)
```
完整的代码示例如下:
```python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
data = np.random.normal(size=1000)
log_data = np.log(data)
mu = np.mean(log_data)
sigma = np.std(log_data)
log_normal_data = np.random.lognormal(mu, sigma, size=1000)
plt.hist(log_normal_data, bins=30, density=True, alpha=0.7)
plt.xlabel('Value')
plt.ylabel('Probability')
plt.title('Lognormal Distribution')
plt.show()
```
这段代码将生成服从对数正态分布的数据,并绘制直方图以可视化分布情况。请注意,由于随机性的存在,每次运行代码生成的数据可能会略有不同。