梅森旋转算法
梅森旋转算法(Mersenne twister)是一个伪随机数发生算法。由松本真和西村拓士在1997年开发,基于有限二进制字段上的矩阵线性递归。可以快速产生高质量的伪随机数,修正了古典随机数发生算法的很多缺陷。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | def _int32(x): return int ( 0xFFFFFFFF & x) class MT19937: def __init__( self , seed): self .mt = [ 0 ] * 624 self .mt[ 0 ] = seed self .mti = 0 for i in range ( 1 , 624 ): self .mt[i] = _int32( 1812433253 * ( self .mt[i - 1 ] ^ self .mt[i - 1 ] >> 30 ) + i) def extract_number( self ): if self .mti = = 0 : self .twist() y = self .mt[ self .mti] y = y ^ y >> 11 y = y ^ y << 7 & 2636928640 y = y ^ y << 15 & 4022730752 y = y ^ y >> 18 self .mti = ( self .mti + 1 ) % 624 return _int32(y) def twist( self ): for i in range ( 0 , 624 ): y = _int32(( self .mt[i] & 0x80000000 ) + ( self .mt[(i + 1 ) % 624 ] & 0x7fffffff )) self .mt[i] = (y >> 1 ) ^ self .mt[(i + 397 ) % 624 ] if y % 2 ! = 0 : self .mt[i] = self .mt[i] ^ 0x9908b0df |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端