Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23864
  • 博文数量: 13
  • 博客积分: 501
  • 博客等级: 下士
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-30 07:53
文章分类

全部博文(13)

文章存档

2011年(1)

2010年(1)

2009年(11)

我的朋友

分类: C/C++

2009-06-30 03:07:38

一个物体从原点出发,每一秒以概率1/2向左走,1/2向右走,第一次回到原点的期望时间 比 一只猴子,每秒种随便按键盘上的一个键,第一次打出”Beijing Welcomes You”的期望时间 还要久,因为前者的期望是无穷大.

  在某个blog 看的这个有趣的问题,于是写个程序验证下。很久没用过rand了。
   
  和烟兄讨论了下


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
double randf()
{
    return (double)(rand()/(double)RAND_MAX);
}
int main ()
{
    int i,r;
    int h;
    for ( h= 0;h<10000;h++)
    {
        // i=0;

           r=0; 

        while (1)
        {
            srand( (unsigned ) time (NULL));

            if ( randf() > 0.5)//可以取到0 1

                r+=1;
            else
                r-=1;
            if ( (randf()) > 0.5)//可以取到0 1

                r-=1;
            else
                r+=1;
            i++;
            if (r==0)
                break;
        }
    }
    printf("%d " ,i);
    return 0;
}


 他说其实r不该等于0,应该等于3,或者-3
 

   搞了半天,原来他要说人会转向,共转三次才会回到原点,我说应该像螃蟹那样横行,然后他说,螃蟹也会转弯啊,然后其实这是对问题的复杂化了。

  程序运行的结果比较匪夷所思,有时i很小就可以结束,有时跑了十几分钟,仍然没有结果。我想,他可能回不来了。正常i等于三十万左右,
但是这是运气好的时候,否则,我已经等不到他回来了。 


烟兄写了个猴子敲键盘的。
这时候我就感觉到了语言的特色了,jave的rand 很简单。JavaScript的代码也很简洁,Python 的语法更简洁,函数也很多,
但是我们却不该各个都去碰下。
事实上我感觉我暂时没法再学习别的语言。因为我一门语言都没深入掌握,所以决定暑假深入学习数据结构和算法。

阅读(442) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~