我正在使用Mersenne Twister的64位版本,特别是版本:
0
并且在编译到Release时收到整数溢出但在Debug中的运行时没有得到异常。 我在高级编译选项中关闭了整数溢出。
在循环内的mt(mti)= ....行上抛出异常。
奇怪的是,我现在在Debug编译中的每个运行时都遇到这个异常,所以在Intel i7浮点寄存器中出现了一些问题,这样我需要关闭然后再上电来擦除内存吗?
最后,为什么Release中的初始化会一直抛出异常,而不是在Debug中初始化?
A C-program for MT19937-64 (2004/9/29 version).
Coded by Takuji Nishimura and Makoto Matsumoto.
答案 0 :(得分:1)
有符号整数数据类型只有32位
无符号整数数据类型只能达到32位
对于64位数据,您应该使用LONG或ULONG
整数OVERFLOWS的原因是数据类型不足以容纳64位数据!
将您的mti更改为LONG类型
如果您需要使用分数和小数点而不是整数
然后将您的mti更改为DECIMAL类型