随机行走课程设计
① “随机行走”的解法
我的想法:
虫子每次行动有4种可能,每种分别为1/4的概率。
有n个小△,专最快走完要n-1步,概率为属1/4的n-1次方;
有3/4的概率会向前迈步,所以能走完的概率为3/4的n-1次方;
以此类推,原地不动的概率也为1/4的n-1次方;……
② 急求 应用随机过程 这门课的 课程设计一份 200 分!
下面记a(i,j)为矩阵中第i行,第j列元素
1·i=1,j=1表示直到第n步最大数是1,第n+1步也是1
概率为1/6,j=2,3,……回,6的概率也答是1,所以
a(1,1)=a(1,2)=……=a(1,6)=1/6,如此类推a(2,2)=2/6,a(3,3)=3/6,
……a(6,6)=1,而当j>i时,a(i,j)=1/6,j<i时a(i,j)=0
可知一步转移矩阵是上三角矩阵,对角线上元素分别为
1/6,2/6,……,1,右上方元素全是1/6
2·二步转移矩阵等于一步转移矩阵的平方,从中取适当的元素即可
3·记前n次最大值为i概率P(n=i)=(i/6)^n-[(i-1)/6]^n
当i<6,n趋向无穷大时P(n=i)=0,i=6时P(n=6)=1
即经过足够多步过程后最终最大数i趋向于6
所以平衡矩阵前5列全为0,第六列全为1。。
③ 随机行走的概率问题
先介绍点儿背景知识:Gambler's Ruin 问题(赌徒问题)
BTW:你都用了随机行走这个词了,我估计你知道,不过我还是介绍一下。
两个赌徒A有a个硬币,B有b个硬币。
每一次,双方均有1/2的可能性赢。
如果A赢,B就给A一个硬币;如果B赢,A就给B一个硬币。
直到某一方的硬币全输掉为止。
这个问题的解:
A最终输掉的概率:b / (a+b)
B最终输掉的概率:a / (a+b)
将赌徒问题看作随机游动:
从 0 点开始,在 [-a,b] 的区间内随机游动。
每一步,如果A赢,那么往右移一格;如果B赢,那么往左移一个。
直到到达 -a 或者 b 结束。
由赌徒问题的解,可知:
先到达 -a 的概率,也就是A输:b / (a+b)
先到达 b 的概率,也就是B输:a / (a+b)
============================================================
回到我们的问题。
1 和 4 对称,2 和 3 对称。我们先求停在 1 上的概率。
如果最后停在 1,说明在走到 1 之前,要走过所有的 2、3、4。
也就是说:从 0 点开始,在向右走到 1 之前,而要先向左走到 4、3、2。
归纳成随机游动:从 0 点开始,要在到达 1 之前,先到达左侧 3 个格子处。
也就相当于赌徒问题中,从 0 点开始,在 [-3,1] 之间随机游动,先到达 -3。
这个概率是:1 / (1+3) = 1/4
这就是停在 1 上的概率。
由对称性,停在 4 上的概率也是 1/4。
再由 2 和 3 的对称性,停在它们上的概率是:(1 - 1/4 - 1/4) / 2 = 1/4
============================================================
我们还可以推广一下。
假设有 n+1 个点:0、1、2、...、n,求停在任意一点 k (k 不为 0) 的概率。
最后停在 k,说明在走到 k 之前,要从 0 向右走过所有的 1、2、...、k-1,也要从 0 向左走过所有的 n、n-1、...、k+1
分两种情况讨论:(1) 先走到 k-1,后走到 k+1,和 (2) 先走到 k+1,后走到 k-1
这两种情况相当于:从 0 开始,在 [-(n-k), k-1] 之间随机游动,第(1)种情形相当于先走到 k-1,而第(2)种情形相当于先走到 n-k。所以:
先走到 k-1 的概率是:(n-k) / (n-1)
先走到 k+1 的概率是:(k-1) / (n-1)
由全概率公式:
Pr(最后停在k) = Pr(最后停在k | 先走到k-1) * Pr(先走到k-1) + Pr(最后停在k | 先走到k+1) * Pr(先走到k+1)
如果先走到 k-1(此时还未走到 k+1),并且最后停在 k,这就要求先向左走过 n-1 个格子到达 k+1,也就是在 [-(n-1), 1] 上随机游动,先走到 -(n-1)。
所以:Pr(最后停在k | 先走到k-1) = 1 / n
如果先走到 k+1(此时还未走到 k-1),并且最后停在 k,这就要求先向右走过 n-1 个格子到达 k-1,也就是在 [1, n-1] 上随机游动,先走到 n-1。
所以:Pr(最后停在k | 先走到k+1) = 1 / n
代入全概率公式:
Pr(最后停在k) = 1 / n
④ C语言数据结构编程 随机走步问题
规定:
0-向左,(-1,0)
1-向右 (1, 0)
2-向上 ( 0, 1)
3-向上 (0, -1)
随机函数, rand()
每次随机一个方向 :t = rand()%4,
这样就可以了,
求平回均数什么的答,直接累计每个方向的次数就可以了
⑤ 用JAVA编写二维随机行走问题
public static void main(String[] args) {
// int[] a = new int[]{1,2,3,4};//1 2 3 4 代表上下左右移动
Random r = new Random();
int i = 100;
int[] avgs = new int[4];
Arrays.fill(avgs, 0);//给avgs赋值为0;
for(i = 100;i>0;i--){
int walk = r.nextInt(4)+1;
//这里就按得到的walk走
switch (walk) {
case 1:
//上走一步
avgs[0]++;
break;
case 2:
//下走一步
avgs[1]++;
break;
case 3:
//左走一步
avgs[2]++;
break;
case 4:
//右走一步
avgs[3]++;
break;
default:
//错误不走
break;
}
}
for(int j = 0;j<avgs.length;j++){
System.out.println(j+"方向走了多少步:"+avgs[j]+" ");
}
}
⑥ 什么是随机行走理论
随机漫步理论——反技术图表派的基础 随机漫步理论(Random Walk)认为,证券价格的波动是内随机的, 像一个在容广场上行走的人一样,价格的下一步将走向哪里, 是没有规律的。 证券市场 中,价格的走向受到多方面因素的影响。 一件不起眼的小事也可能对市场产生巨大的影响。 从长时间的价格走势图上也可以看出, 价格的上下起伏的机会差不多是均等的。
⑦ 随机游走的无规则行走与扩散定律
无规则行走在任意尺度上都具有相似结构。例如一个在二维(d=2)格子上游动,每一定时间以相同概率移动到其相邻位置,其轨迹即二维随机轨迹,同样可以扩展到三维。举个例子,你取2 个硬币一个1 分,一个5 分。你每五秒,将2 个硬币掷一次,1 分硬币用于左右移动标记,5 分硬币用于前后移动标记,绘出路径就是你的二维无规则行走。假如你走了1000 步那么你回到起点的方式M0 有多少种?那么么必须正反面各500 次。即,对一个特定投币序列将投出正面的序号列出清单,清单包括500 个不同的整数这个量为:1000!/500!,而任意两张清单只在元素存在换序的差异,则实际上并无区别所以必须除以可能的置换数500!。M0=1000!/(500!×500!),“!”表示阶乘。回到原点的概率P0=M0/ M,这个概率满足二项式分布。对于所有M 种可能可以用斯特林公式:lnM!≈M lnM-M + ½ln(2πM)。通过计算我们知道回到起点的概率很低。
要想找出第1000 步后你走了多远,你可以列出1000 次投币的结果序列然后对所有(x1000)的2次方 求平均,得到1000 步后的均方位置;这显然太复杂,好在还有另外的方法。我们可以将所有2的N次方 种可能行走一一配对,每一配对由相同的x(N-1 );{(N-1)为x的下脚标}的两个可能性相等的行走组成,只是最后一步不同。N 步随机性走的均方位移比N-1 步大a的2次方,后者又比N-2 步大a的2次方,均方位移=Na的2次方。a 为格子间隔,每一个格子点上游动的可能方向有2d 个(d 是格子维数)单位时间内游动的方差为D=a2/(2d)t ,D 为扩散系数(一些参考书中也用字母K 表示,a后面的2为次方,后面凡数字在字母后面都表示指数)。对于一维无规则行走的均方位移随时间线性增加2Kt,扩散常数D=a2/(2Δt)。这个逻辑可以推广到二维和三维。 图1.130 醉酒人的无规则行走 也许行走若干个步后他会回到出发点,但这样的概率非常小。他离开酒吧的距离满足扩散定律。 图1.131 (a)二维无规则行走;(b)当步骤更多,步幅更低时二维无规则行走;(c)三维无规则行走。 扩散以一个初始分布释放大量的无规则行走,观察他们的密度就会得到分布函数。1855 年法国生理学家Fick 提出了描述扩散规律的基本公式— 菲克定律,在一维(如x 方向扩散的)粒子流密度(即单位时间内在单位截面上扩散的粒子流)J N 与粒子数密度梯度dc/dx成正比。扩散通量J=-D×(dc/dx),称为菲克定律又称扩散第一定律。进一步消掉J,找出浓度随时间的变化关系dc/dt=D(d2c/dx2)其中2都是上角标,称为菲克第二定律;在高等教材中可以写成偏导的形式d 换成ә。
任何单次步骤不会遵从扩散定律,但只要等待足够长的时间和步骤,便可精确预测无规则行走。布朗运动就是无规则行走这一现象的宏观观察。通过扩散定律我们将布朗运动的微观参数(步长a 和间隔时间Δt)与宏观实验可观测量(扩散常数D)建立了联系。然而一个方程无法解出两个未知量,测量K 不足以得到a 和Δt。这意味着还需要其他能够说明摩擦与扩散定量联系的公式。
扩散定律是跨学科的普适定律
对无规则行走的数学处理使用了过于简化的假设,扩散定律是普适的,只要给定独立随机行走的某种分布,它就不依赖于具体的模型。涨落是随机的、混沌的,无规则行走的结果就是扩散,这包括物质扩散、动量扩散、热量扩散等。这也意味着结晶学、天文学、生物学、气象学、流体力学、经济学都将用到扩散定律。扩散定律是普适的,在这里我们作为一个结论而接受下来,具体的一系列数学证明过程给予舍弃。感兴趣的朋友可以参见任何一本物理化学教材或分形教材。
扩散定律与守恒量
扩散是一个随机涨落的过程,在本科一年级的物理课程已经提及一个落体最终会达到取决于摩擦的“末速度”。以悬浮颗粒来考虑摩擦,颗粒虽然受随机碰撞,仍获得了一个净漂移速度。v=f/ζ ,ζ=2m/Δt 其中ζ是黏性摩擦系数,与扩散系数一样可以实验测量。摩擦源于物理实体与周围热致扰动的流体随机碰撞。每一种颗粒当置于不同的溶剂中时都会有相应特征D(扩散系数)和ζ。球体的黏性摩擦系数与尺寸间存在简单关系,ζ=6πηR 斯托克斯(stokes)公式;R 是颗粒半径,η是常数称为流体黏度(水的黏度为10-3kg/ms)。由于有效步长a 和Δt 无法观察,要想证实扩散与粘滞仅仅是热运动的两个方面,我们还需要第三个关系。爱因斯坦注意到a 和Δt 的关系,按照推到理想气体定律的思路:(a/Δt)2=kBT/m,联合起来就构成爱因斯坦第一扩散公式:ζD=kBT。这个关系由爱因斯坦在1905 年的硕士论文中得到,这表明颗粒位置的涨落与摩擦阻力相联系,并且这个关系是定量普适的。越小的颗粒受到摩擦阻力越小,但扩散系数会更大,更容易扩散。ζD 的乘积提供了一个可证伪的预言来检验“热即分子的无规则运动”;这个与预言提出不久就立刻被佩兰(Jeans Perrin)和其他人的实验所证实。任何无规则行走携带的守恒量都各自对应一个扩散定律。 无规则行走只是布朗运动的理想状态
在很多系统都存在不同类型的无规则行走,他们都具有相似结构。单个的随机事件我们不可预测,但随机大量的群体行为,却是精确可知的,这就是概率世界的魅力,在偶然中隐含着必然。随机性造成了低尺度下的差异性,但在高尺度下又表现为共同的特征的相似性。按照概率的观点“宇宙即是所有随机事件概率的总和”。 椭球体布朗运动相关研究
虽然无规则行走导致的扩散满足以上的方程并有普适性,但假如这样的的“无规则行走”某个方向,并不是完全随机呢?以前面提到的投硬币为例子,一个1 分,一个5 分,其中1 分硬币破损使得正反面概率不相等,并且随机若干步后,将1 分和5 分硬币所代表的方向对调;那么二维的无规则行走路径必然发生改变。当年爱因斯坦的论文是探讨球形颗粒的布朗运动,我们知道球形颗粒的旋转并不影响他的平移,旋转的非球形例子却会影响它的平移。实际中,大量布朗运动的颗粒都是非球形的,所以更多的模型不得不考虑随机转动问题。其实即使对球形颗粒在黏性流体中,也要考虑随机转动产生的转动摩擦系数对扩散的影响。
宾夕法尼亚大学的网站报道,研究人员用数字视屏显微镜观察水中悬浮椭球体的随机旋转和移动。球形颗粒扩散分布将随时间逐渐变宽,为高斯型浓度分布;而椭球颗粒不满足高斯分布。随着布朗运动的深入研究,越来越多的实验表明布朗运动颗粒的行为与爱因斯坦一个世纪前的假设不同。2005 年10 月的物理评论快报,提到现在实验室可以跟踪布朗运动颗粒的测量精度达到微秒和纳米的尺度。科学家们也发现活细胞的许多基本过程由布朗运动所驱动。试验结果描述布朗运动的方程式偏离标准理论的,实际的布朗运动要比理想化的无规则行走要复杂。 图1.132 椭球体在水中的布朗运动。 标准的无规则行走,色彩标记显示出椭球的耦合方向和位移,并清楚的表明椭球的扩散其长轴比其短轴扩散更快。(此图来源于宾夕法尼亚大学网站关于布朗运动的研究) 布朗运动是分形的典型例子,理想状态下的布朗运动是高斯正态分布,当然更多的布朗运动研究细节我们不做探讨。任何事物都不是孤立的,都是相互作用、相互联系的。用还原论观点将系统一个个隔离是对事物的理想化,是在一定程度上精确定量描述系统,当然这也是认识事物必经的步骤,但是有缺陷的。
哥德尔不完备定理,以及认识主体对客体的反映永远存在这不完备性。我观赞同哥本哈根学派的主张“自然科学不是自然界本身,而是人和自然界间关系的一部分,因而依赖人”。无论用还原论还是整体论都是用抽象去阐明物质的特性,这些抽象在任何时候仅仅是近似地、有条件的把握了物质的本质,不是世界的全部。布朗运动研究的历史,具有典型性,有点像整个科学研究史的缩影。人对事物的认识总是渐进的,不断深入的,随着认识深入会发现各种模型都是理想化的条件。这种认识永远无法走向事物的绝对认识,因为孤立的事物是不存在的,所有的系统都是宇宙整体的一部分。
⑧ 随机行走算法
可以用rand()产生随机数,然后模,结果为0,1,2,3四种情况,分别代表向前,后,左,右走一步。每次都是随机的,所以总体也是随机行走。
代码如下:
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
int x=0,y=0,i;
int step;
cout<<"初始位置为(0,0)"<<endl;
srand(time(NULL));
for(i=1;i<100;i++)
{
step=rand()%4;
if(step==0)
{
x++;
cout<<"第"<<i<<"步向前走"<<endl;
cout<<"当前位置为("<<x<<","<<y<<")"<<endl;
}
else if(step==1)
{
x--;
cout<<"第"<<i<<"步向后走"<<endl;
cout<<"当前位置为("<<x<<","<<y<<")"<<endl;
}
else if(step==2)
{
y--;
cout<<"第"<<i<<"步向左走"<<endl;
cout<<"当前位置为("<<x<<","<<y<<")"<<endl;
}
else if(step==3)
{
y++;
cout<<"第"<<i<<"步向右走"<<endl;
cout<<"当前位置为("<<x<<","<<y<<")"<<endl;
}
}
}
⑨ 简易电子乒乓球游戏机设计与实现 课设题目,帮帮忙啊~
设计初始发球权随机确定电路2.设计乒乓球行走路线,分为左中右的组合,例如版从甲方的权左路进攻乙方的右路,进攻路线由键盘确定,即双方各用三个键代表左中右,当选按下左键盘后,紧接着按下中键盘,则代表接对方向本侧左方的攻球,打往对方的中路,以此类推,先接对方的球,再进攻对方3球的行走路线由发光二级管逐一显示,从攻击方击球开始到达被攻击方,多个发光二级管逐一亮灭,全部时间为0.8秒.4当球到达被攻击方时,且最后一个灯亮结束0,2秒内,被攻击方接球才有效,并且接球方正确按下相应来球对应侧的按键,以及反击对方某路的按键后,产生0.2秒的脉冲,当最后一个灯亮结束的0,2秒内的脉冲和反击脉冲有重合的时候,才为正确击球,否则失败。5能够判断输赢并且自动几分,并按照乒乓球规则交换发球权
谢谢啦~~各位,用MAXplus2
⑩ c++蒙特卡洛方法随机行走
如下模拟1000次。
#include<iostream>
#include<algorithm>
usingnamespacestd;
doublea[20][20]={0};
intdir[][2]={{-1,0},{1,0},{0,-1},{0,1}};
voidnextxy(int&x,int&y){
inta[4]={0,1,2,3};
random_shuffle(a,a+4);
for(inti=0;i<4;i++){
=x+dir[a[i]][0],
newy=y+dir[a[i]][1];
if(newx>=0&&newx<20&&newy>=0&&newy<20){
x=newx;
y=newy;
return;
}
}
}
intmain(){
intcount=10;
for(intk=0;k<count;k++){
intx=0,y=0;
for(inti=0;i<10000;i++)
nextxy(x,y);
a[x][y]++;
}
for(inti=0;i<20;i++){
for(intj=0;j<20;j++)
cout<<a[i][j]/count<<'';
cout<<endl;
}
}
时间复杂度为o(10000n),n为模拟次数。当n较大时,花费时间较多。