Free
yeaha1
全部博文(1)
2009年(1)
分类:
2009-03-23 14:20:56
产生随机数最简单的方法是线性同余发生器: Xi+1 = AXi mod M 前一个随机数Xi用于产生后一个随机数Xi+1,X0称为种子,一般使用系统时钟或1。 Lehmer 建议使用素数 M = 2 147 483 647, A = 48 271 。 为了避免32位机的溢出一般使用如下函数生成随机数: static unsigned long Seed = 1; #define A 48271L #define M 2147483647L #define Q ( M / A ) #define R ( M % A ) double Random( void ) { long TmpSeed; TmpSeed = A * ( Seed % Q ) - R * ( Seed / Q ); if ( TmpSeed >= 0) Seed = TmpSeed; else Seed = TmpSeed + M; return ( double ) Seed / M; } void Initialize ( unsigned long InitVal ) { Seed = InitVal; }
上一篇:没有了
下一篇:没有了
登录 注册