mersenne twister algorithm c