mersenne twister generator algorithm