#include "../lib/lib.h" #include "../lib/lib2.h" #include "../lib/lib3.h" #include int main() { struct mt_19937_state mt_state; struct mt_19937_state mt_state2; mt_state2.index = 624; mt_19937_seed(time(NULL), &mt_state); unsigned int val[624]; int i; // obtaining 624 values for(i=0;i<624;i++) val[i] = mt_19937(&mt_state); unsigned int tmp; unsigned int tmp2; // restore the state for(i=0;i<624;i++) { tmp = unshift_right_xor(val[i], 18); tmp = unshift_left_xor(tmp, 15, 0xEFC60000); tmp = unshift_left_xor(tmp, 7, 0x9D2C5680); mt_state2.mt[i] = unshift_right_xor(tmp, 11); if (mt_state2.mt[i] != mt_state.mt[i]) printf("state %i not euql\n", i); } // check if the next numbers are the same for both MT PRNG for(i=0;i<624;i++) { tmp = mt_19937(&mt_state); tmp2 = mt_19937(&mt_state2); if (tmp != tmp2) { printf("NOT EQUAL, CHECK YOUR DAMM CODE\n"); break; } } }