一般地,伪随机数的生成方法主要有以下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处存放的是什么。

刚刚查询:伪随机 少年队 多功能 有权力 西瓜皮 vajradhara %E8%B4%BE%E8%89%AF%E5%85%B4 牛蛋田 清水江 rhythmic 纽瓦克 有野心 primary occurrence 露骨山 艾莉森 广泛性 ʷ 六十万 Jaobson optimal 艾哈迈迪 解说员 风景秀丽 地方化 vascular 口袋罪 organized ��ʿ�� 冲上去 polysaccharide 随葬品 蜂拥而至 蛋清OL 蜂花檀香皂 马尼拉 年龄特征 国民收入 纳瓦特尔语 半山腰 幽灵旅 紧密联系 天真烂漫 scorpion 高考新政 马蹄形 七弦琴 运输工具 魏玛公国 金山寺 Big-Beat 自治权 嘟噜噜王 魅力四射 变魔术 度假胜地 贸易中心 工资性 四大发明 银杏内酯 观光区 孤军深入 子宫颈 甲类OTC 肌健 扁桃体炎 粘合剂 乘火车 娱乐场 营里镇 ӣТ Chiriqui 长尾巴 履行合同 SweetBox 无支票 影视后期制作 atheism 昆廷·布赖斯 Sporting
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 消耗时间:0.043秒 内存2.5MB