Php 生成随机曲线
这可能更像是一个数学问题,而不是一个直接的编程问题 我试图创建一条曲线,在我的脚本中模拟市场对你的产品的兴趣(我正在制作一个模拟游戏) 必须满足一些标准Php 生成随机曲线,php,math,random,graph,curve,Php,Math,Random,Graph,Curve,这可能更像是一个数学问题,而不是一个直接的编程问题 我试图创建一条曲线,在我的脚本中模拟市场对你的产品的兴趣(我正在制作一个模拟游戏) 必须满足一些标准 曲线必须随机生成 曲线在x轴上有16个台阶,其中曲线每一个台阶都可以增加或减少 曲线在y轴上有100个台阶 曲线可以从y轴的任何位置开始,但必须从x轴的第0步开始 增量和减量应该是现实的,这意味着它们应该在每一步略微增加或减少,尽管出现较大/较小增量/减量的可能性较小 考虑下面的图片作为我试图实现的演示 我最初的想法是,对于每一步,我都会用
- 曲线必须随机生成
- 曲线在x轴上有16个台阶,其中曲线每一个台阶都可以增加或减少
- 曲线在y轴上有100个台阶
- 曲线可以从y轴的任何位置开始,但必须从x轴的第0步开始
- 增量和减量应该是现实的,这意味着它们应该在每一步略微增加或减少,尽管出现较大/较小增量/减量的可能性较小
您可以将其实现为
马尔可夫链
/随机游走
(尽管原则上两者相似)
对于马尔可夫链-您需要一个100x100矩阵,根据您的要求(步长、变化率等)具有转移概率
对于随机游走-根据要求,将下一步建模为从适当分布中提取的随机变量。您可以将其实现为
马尔可夫链
/随机游走
(尽管原则上两者相似)
对于马尔可夫链-您需要一个100x100矩阵,根据您的要求(步长、变化率等)具有转移概率
对于随机游走-将下一步建模为根据要求从适当分布中提取的随机变量。您可能想要的以及在市场描述中经常使用的是几何布朗运动。抽象地说,它是由一个随机微分方程定义的
dX(t)=X(t)*[ r*dt+s*dB(t) ]
其中r是漂移或平均增长,s是方差或波动性,dB(t)是服从正态分布N(0,dt)的随机变量。可以将t=t0+k*Δt离散为
X(t+Δt)=X(t)*[ 1+r*Δt±s*√(Δt) ]
随机选择符号,每个方向的概率为0.5。这适用于非常小的Δt值。对于较大的步骤,请使用
X(t+Δt)=X(t)*[ 1+r*Δt+s*z(t)*√(Δt) ]
其中,随机变量z(t)遵循标准正态分布
有关更复杂的方法,请参见“无痛苦的财务计算”[1]
[1] 你可能想要的,以及在描述市场时经常使用的是几何布朗运动。抽象地说,它是由一个随机微分方程定义的
dX(t)=X(t)*[ r*dt+s*dB(t) ]
其中r是漂移或平均增长,s是方差或波动性,dB(t)是服从正态分布N(0,dt)的随机变量。可以将t=t0+k*Δt离散为
X(t+Δt)=X(t)*[ 1+r*Δt±s*√(Δt) ]
随机选择符号,每个方向的概率为0.5。这适用于非常小的Δt值。对于较大的步骤,请使用
X(t+Δt)=X(t)*[ 1+r*Δt+s*z(t)*√(Δt) ]
其中,随机变量z(t)遵循标准正态分布
有关更复杂的方法,请参见“无痛苦的财务计算”[1]
[1] LutzL和Nishanth给出的答案是完全正确的&这里我要提供的只是一个简化。实现他们建议的一种方法是:生成一个随机数列表,然后通过保持一个运行总数来构造要绘制的数据。即:给定列表
x[0],x[1],x[2],…,x[n-1]
,计算x[0],x[0]+x[1],x[0]+x[1]+x[2],…,x[0]+x[1]+x[2]+x[n-1]
并绘制该图
随机数
x[0],x[1],x[2],…,x[n-1]
可以从几乎任何分布中提取;出于您的目的,均匀分布很好(可能将数字乘以比例因子使其变大或变小),也可能将x[0]
设置为某个恒定偏移量(否则,绘图以x轴为中心)。选择不同的分布会改变构造的部分和的理论性质,但这与您的目的无关。LutzL和Nishanth给出的答案是完全正确的&这里我要提供的只是一个简化。实现他们建议的一种方法是:生成一个随机数列表,然后通过保持一个运行总数来构造要绘制的数据。即:给定列表x[0],x[1],x[2],…,x[n-1]
,计算x[0],x[0]+x[1],x[0]+x[1]+x[2],…,x[0]+x[1]+x[2]+x[n-1]
并绘制该图
随机数
x[0],x[1],x[2],…,x[n-1]
可以从几乎任何分布中提取;出于您的目的,均匀分布很好(可能将数字乘以比例因子使其变大或变小),也可能将x[0]
设置为某个恒定偏移量(否则,绘图以x轴为中心)。选择不同的分布会改变构造的部分和的理论属性,但这与您的目的无关。您必须使用PHP来实现这一点吗?有很多Javascript
框架和插件可以很好地处理图形。即使您不想要javascript
,也有