| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 518 人关注过本帖
标题:伪随机生成函数(寻求研究的朋友看过来,共同探讨)
只看楼主 加入收藏
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
结帖率:100%
收藏
 问题点数:0 回复次数:0 
伪随机生成函数(寻求研究的朋友看过来,共同探讨)
上个星期有位朋友邀请我一起研究随机数生成函数,但是因为最近有期末考试所以谢绝了。今日在电脑上翻阅以前学习C语言的代码的时候翻出来了如下的头文件函数,就发上来,希望那位朋友见谅。也希望各位志同道合的朋友能一起探讨研究:
程序代码:
/* A family of pseudo random number generators */

#define   INITIAL_SEED       17
#define   MULTIPLIER         25173
#define   INCEREMENT         13849
#define   MODULUS            65536
#define   FLOATING_MODULUS   65536.0

static unsigned   seed = INITIAL_SEED;       /* external, but */
                                      /* private to this file */
unsigned random(void)
{
   seed = (MULTIPLIER * seed + INCEREMENT) % MODULUS;
   return seed;
}

double probability(void)
{
   seed = (MULTIPLIER * seed + INCEREMENT) % MODULUS;
   return (seed / FLOATING_MODULUS);
}
大致原理是通过使用静态外部变量限制种子seed的作用域(它的作用域就是从它的声明位置开始,直到当前文件的结束位置。对于其它文件中所定义的函数,它是不可见的,即使这些函数使用了extern存储类型关键字),从而创建了一种“私有”机制(这对于模块化编程而言非常重要)。这两个伪随机生成函数使用了相同的种子(它们的算法基于线性同余方法)。random()函数产生了一组位于0和MODULUS之间的整型随机数。probability()函数产生一组位于0和1之间的浮点型随机数。
搜索更多相关主题的帖子: C语言 
2011-12-09 20:29
快速回复:伪随机生成函数(寻求研究的朋友看过来,共同探讨)
数据加载中...
 
   



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

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