初始化64位Mersenne Twister时出现异常(整数溢出)

时间:2015-06-04 18:57:23

标签: vb.net visual-studio-2010 random numbers 64-bit

我正在使用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.

1 个答案:

答案 0 :(得分:1)

有符号整数数据类型只有32位

无符号整数数据类型只能达到32位

对于64位数据,您应该使用LONG或ULONG

整数OVERFLOWS的原因是数据类型不足以容纳64位数据!

将您的mti更改为LONG类型

如果您需要使用分数和小数点而不是整数

然后将您的mti更改为DECIMAL类型