一般地,伪随机数的生成方法主要有以下3种:

(1) 直接法(Direct Method),根据分布函数的物理意义生成。缺点是仅适用于某些具有特殊分布的随机数,如二项式分布、泊松分布。

(2) 逆转法(Inversion Method),假设U服从[0,1]区间上的均匀分布,令X=F-1(U),则X的累计分布函数(CDF)为F。该方法原理简单、编程方便、适用性广。

(3)接受拒绝法(Acceptance-Rejection Method):假设希望生成的随机数的概率密度函数(PDF)为f,则首先找到一个PDF为g的随机数发生器与常数c,使得f(x)≤cg(x),然后根据接收拒绝算法求解。由于算法平均运算c次才能得到一个希望生成的随机数,因此c的取值必须尽可能小。显然,该算法的缺点是较难确定g与c。 伪随机数发生器

因此,伪随机数生成器(PRNG)一般采用逆转法,其基础是均匀分布,均匀分布PRNG的优劣决定了整个随机数体系的优劣[7]。下文研究均匀分布的PRNG。

C语言程序例

下面看这样一个C程序: 伪随机数

这个程序(rand01.c)完整地阐述了随机数产生的过程:

首先,主程序调用random_start方法,random_start方法

movedata(0x0040,0x006c,FP_SEG(temp),FP_OFF(temp),4);

这个函数用来移动内存数据,其中FP_SEG(far pointer to segment)是取temp数组段地址的函数,FP_OFF(far pointer to offset)是取temp数组相对地址的函数,movedata函数的作用是把位于0040:006CH存储单元中的双字放到数组temp的声明的两个存储单元中。这样可以通过temp数组把0040:006CH处的一个16位的数送给RAND_SEED。 伪随机数理论推导

random用来根据随机种子RAND_SEED的值计算得出随机数,其中这一句:

RAND_SEED=(RAND_SEED*123+59)%65536;

是用来计算随机数的方法,随机数的计算方法在不同的计算机中是不同的,即使在相同的计算机中安装的不同的操作系统中也是不同的。linux和windows下分别试过,相同的随机种子在这两种操作系统中生成的随机数是不同的,这说明它们的计算方法不同。

明白随机种子是从哪儿获得的,而且知道随机数是怎样通过随机种子计算出来的了。那么,随机种子为什么要在内存的0040:006CH处取。0040:006CH处存放的是什么。

相关查询: 伪随机
最新查询:妄自尊大 依他凝血素α(活化) WebGIS原理与方法教程 艺海浮台 源代码 planned 杞子羊肉丁 茅镬村 湛江文学 烤金钱肉 管接头 史蒂文森 parallelism 念念不忘 聚丙烯 Сֶܱ 反革命 荆州三观 殷涛 图书室 工作处 博罗县龙溪二中 威廉·亨利·帕金 独龙悬钩子 第四次 根瘤菌 obtusifolia asparagine 工业学校 大碗腊味娃娃菜 地米斯托克利 advances Vasilis employed. 采购供应 奥卡伊浩 守恒定律 链球菌咽喉炎 可达到 小兴安岭 军事观察员 好逑传 你不可不知的德国牧羊犬饲育100法 剪彩仪式 单子叶植物 Yunnanoceras 大林隆介 无机酸 Shinjou Mohamed 民族解放运动 Diagnostics 阳痿康复汤 劳民伤财 美国宇航局喷气推进实验室 诱变剂 制水歌 黑龙江八五二农场 音乐人 卡佩王朝 登陆艇 调研员 伊利亚特 恐龙对大蟒续集 灵魂盛宴 南阳市官庄工区 Localita æʱ 琐罗亚斯德教 侄女婿 有口无心 大分舌蜂 绿绮 坎坷不平 羲之装睡 宁珈 华中大厦 D628 c++语言程序设计 伪随机
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.041秒 内存2.83MB