我目前正在尝试使用MRG32K3A2算法在C ++中生成随机数。在用C ++实现之前,我在R中对我的程序进行了原型输入,现在我注意到我的C ++程序有些奇怪的行为。
问题可归结为以下计算:
long long m2 = 4294944443;
long long a21 = 527612;
long long a23 = -1370589;
int seed = 12345;
long long test1 = a21*seed+a23*seed
long long test2 = test1 % m2 // Modulo here
在例如R或Excel中进行此计算得出
test1 = -10406551065
test2 = 2478282264
用C ++做这件事给我
test1 = -10406551065
test2 = -1816662179
我确定这是一个很好的理由,但我只是没有得到它。我在Visual C ++(2015)中编程是否有所作为。
提前致谢