| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2752 人关注过本帖
标题:C++ 程序解决醉汉行走问题
只看楼主 加入收藏
行者3
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-7-30
收藏
 问题点数:0 回复次数:2 
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
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
因为你的值溢出了

hl928452957@gmail点com

2014-11-11 07:56
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
只要在代码中加入一些反馈信息即可知道问题出现在哪里,而且你随机出来的数是固定的.所以direction也是固定的.自己试试看
程序代码:
//for后面放入这句
        cout << "a=: " << a
             << "b=: " << b
             << "c=: " << c
             << "d=: " << d << endl;
        l = k + sqrt((a - b) * (a - b) * 1.0 + (c - d) * (c - d) * 1.0);
        cout << "l:" << l << endl;

// while (m <= 5) 的情况下,   思考m<=1e5
a=: 0b=: 0c=: 5d=: 0
l:5
a=: 0b=: 0c=: 10d=: 0
l:15
a=: 0b=: 0c=: 15d=: 0
l:30
a=: 0b=: 0c=: 20d=: 0
l:50
a=: 0b=: 0c=: 25d=: 0
l:75
a=: 0b=: 0c=: 30d=: 0
l:105
Hello world!


[ 本帖最后由 stop1204 于 2014-11-11 08:02 编辑 ]

hl928452957@gmail点com

2014-11-11 07:57
快速回复:C++ 程序解决醉汉行走问题
数据加载中...
 
   



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

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