数学建模社区-数学中国
标题:
matlab一个很小的编程题目,求助!!!
[打印本页]
作者:
daseasea
时间:
2013-7-22 09:02
标题:
matlab一个很小的编程题目,求助!!!
本人matlab基本上是不大懂的。。。本来想用C语言实现,结果发现C语言在数学问题上实在有限,题目不难,但是实在不会用matlab把代码写出来
因此求助各位大神,耽误您一点小小的时间帮我写一下这个题目的matlab代码行吗?谢谢各位!我会附上我的c语言代码,如果有需要,可以直接用。
题目如下:一个小蚂蚁在平面格点上移动,1/4概率上下左右,每次移动一步,比如从(0,0)到(0,1),不能斜着移动。
设总共走了n步,
记这n步中,走到过的格点数目为R(重复走到的格点,只能算一个)
记这n步中,到过int(ln(n))次的格点数目为r
计算当n趋于无穷时 r/R的比值
例如:走了n=10步,可能只到过8不同的格点(有重复走到的格点),此时R=8
在n=10步中,int(ln(10))=2,此时统计到过两次的格点数目,可能有1个,r=1
我的c语言代码如下
#include<cmath>
#include <ctime>
#include <cstdlib>
using namespace std;
long const N=100;
long const M=2*N;
int main()
{
int a[M+1][M+1]={0};
int b;
int j=N,k=N;
double R=0,r=0;
srand(unsigned(time(0)));
for(int i=1;i<=N;i++)
{
b=1+4*rand()/RAND_MAX;
switch (b)
{
case 1:j++;a[j][k]=a[j][k]+1;break;
case 2:k++;a[j][k]=a[j][k]+1;break;
case 3:j--;a[j][k]=a[j][k]+1;break;
case 4:k--;a[j][k]=a[j][k]+1;break;
default:break;
}
}
for(int i=0;i<=M;i++)
for(int s=0;s<=M;s++)
{
if(a[i][s]!=0)
R=R+1;
}
if(int(log(double(N)))!=0)
{
for(int i=0;i<=M;i++)
for(int s=0;s<=M;s++)
{
if(a[i][s]==int(log(double(N))))
r=r+1;
}
}
cout<<r<<endl<<R<<endl;
cout<<r/R<<endl;
return 0;
}
作者:
gt93
时间:
2013-8-21 13:12
目测楼主是C霸。
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5