用long long理解C ++中的模运算

时间:2016-10-27 16:33:21

标签: c++ modulo

我目前正在尝试使用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)中编程是否有所作为。

提前致谢

0 个答案:

没有答案