Tag: 蒙特卡洛

C#Mersenne Twister随机整数发生器实现(SFMT)蒙特卡罗模拟

到目前为止,我一直在使用此处的C# Mersenne Twister生成随机数: http://www.centerspace.net/resources.php 我刚发现SFMT的速度应该是这里的两倍: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/ 有人能指出我在SFMT的C#实现吗? 我的要求是在(和包括)0和2 ^ 20(1048576)之间生成一个整数。 我需要每天花费数万亿次进行24小时制模拟,所以我准备好花几天时间来完善它。 目前我通过添加一种符合我要求的新方法调整了Center Space Mersenne Twister: public uint Next20() { return (uint)(genrand_int32() >> 12); } 使用方法genrand_int32()我想生成我自己的版本genrand_int20() ,它在(和包括)0和2 ^ 20之间生成一个整数,以保存在上面的转换和转移但我不懂数学。 究竟我该怎么做? 还使用uint比int更快 ,或者只是可寻址数字的问题? 因为我只需要1048576,我只关心速度。 此外,它将在带有.NET 2的Windows Server 2003 R2 SP2(32位)盒上运行。处理器是AMD Opteron 275 (4核) 。