陈默

陈默的博客

他的个人主页  他的博客

090905在区间(a,b)上均匀分布的随机数函数

陈默  2009年09月05日 星期六 11:00 | 1872次浏览 | 9条评论

学习笔记

等地铁的时间——在区间(a,b)上均匀分布的随机数函数

   rnd(1)*(b-a)+a

 

设地铁10分钟一趟,乘客到达车站的时间是随机的,以分钟为单位(不满一分钟按一分钟算),模拟10000名乘客等车时间的人数分布,即等了1分钟、2分。。10分钟的人各有多少个?

//~ abjvn(a,b),在区间ab上均匀分布的随机数函数
double abjvn(double a,double b)
{
    double f;
    f=rnd(1)*(b-a)+a;
    return f;
}

int main(int argc,char** argv)
{
    static int a[11],i,k;
    rnd(-2);
    printf("\n以分钟为单位,模拟等车的人数:\n");
    for(i=1;i<=10000;i++)
    {
        k=abjvn(0,10)+1;
        //printf("%3d",k);
        a[k]++;
    }
    for(i=1;i<=10;i++) printf("等%2d分钟:%5d 人\n",i,a[i]);
    rnd(-3);
    return 0;

}

这是书上给的函数,需要#include "rndlib.h",昨天的那个头文件。


我个人认为,main函数可以改成

int main(int argc,char** argv)
{
    static int a[10],i,k;    //必须要static才行,开始时元素清0
    rnd(-2);
    printf("\n以分钟为单位,模拟等车的人数:\n");
    for(i=1;i<=10000;i++)
    {
        k=abjvn(0,10);
        printf("%3d",k);
        a[k]++;        //等了k+1分钟中的人数+1
    }
    for(i=0;i<10;i++) printf("等%2d分钟:%5d 人\n",i+1,a[i]);
    rnd(-3);
    return 0;
}

应该和书上给的例子,没什么区别。。。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
王依依

回复 王依依  2009年09月05日 星期六 11:46

不太懂...不过...
static 不如 int a[10] = {0}; 如果不是main() 的话

8条回复

  • 陈默

    回复 陈默  2009年09月05日 星期六 11:57

    话说哲思这个回复的设定真让人怨念。。。

    算法。。我们都没有这门课,我们只有数据结构。。。
    我自己借的算法书看的,算法和数据结构应该连在一起学吧,我觉得。。
    年Google的Code Jam打击到我了,我觉得每天看一点算法。。。明年再去code jam。。。

    3条回复

  • 陈默

    回复 陈默  2009年09月05日 星期六 11:48

    static 这是那本书上这么写的,我个人认为的就是单纯的为了,初始化a数组中的元素为0,和你那么写的效果一样的~

    static允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。

    3条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号