- 在线时间
- 4 小时
- 最后登录
- 2014-4-3
- 注册时间
- 2013-1-29
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 62 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 20
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 3
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 4
升级   15.79% 该用户从未签到 - 自我介绍
- hello~
 |
本人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;
}
|
zan
|