| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2752 人关注过本帖
标题:C++ 程序解决醉汉行走问题
取消只看楼主 加入收藏
行者3
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-7-30
收藏
 问题点数:0 回复次数:0 
C++ 程序解决醉汉行走问题
一名醉汉每次在前后左右四个方向中随机选择一个方向走一米,请问走了n步之后该醉汉离出发位置有多远?请绘制出距离与步数之间的关系。
二、分析问题
  由于每次走的路径都不相同,因此每次走了n步后离出发位置的距离可能不相同,因此需要模拟m次,然后求出这m次的平均值。
  通过电脑产生n个1到4的随机数,分别代表前、后、左、右。其中向前a步,向后b步,向左c步,向右d步。(其中a+b+c+d=n)再通过s= 计算出行走后距原点的距离。
  按照上述方式重复m次,得到m个距离值 、 ,再求加权平均,得到行走n步的平均距离s.

#include <iostream>
#include<cmath>
#include<cstdlib>
#include<ctime>
using namespace std;

int main()
{ int i,m,n,direction,a,b,c,d;
  double k,l;

  cout<<"请输入醉汉行走的步数n:";
  cin>>n;

   a=0;b=0;c=0;d=0;
   k=0;
   m=0;

while(m<=1e5){
   for(i=1;i<=n;++i){

   srand(time(NULL));

   direction=rand()*4/(RAND_MAX+1)+1;//direction生成方向 1、2、3、4分别代表前后左右;

  switch(direction){
  case 1:a+=1;break;
  case 2:b+=1;break;
  case 3:c+=1;break;
  case 4:d+=1;break;
  }
}
   l=k+sqrt((a-b)*(a-b)*1.0+(c-d)*(c-d)*1.0);
   k=l;
   m+=1;
}
   l=l/m;
   cout<<"醉汉行走的平均距离是:"<<l<<endl;
    cout << "Hello world!" << endl;
    return 0;
}
运行结果总是-1.IND,不知道哪里错了
搜索更多相关主题的帖子: include 平均值 左右 
2014-11-08 21:19
快速回复:C++ 程序解决醉汉行走问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015729 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved