Adding a debugging printf to the C here: void mt_init_seed( struct mt *m, uint32_t seed ) { int i; uint32_t *mt; mt = m->mt; mt[0] = seed & 0xffffffff; for ( i = 1; i < N; i++ ) { mt[i] = 1812433253 * (mt[i-1]^(mt[i-1]>>30)) + i; printf("init %d: %u\n", i, mt[i]); // what we want } m->mti = N; } and running $ perl -MMath::Random::MT -e "Math::Random::MT->new(1)" > out