unsigned int m_w = 11; unsigned int m_z = 173; unsigned int M = 2001; unsigned int myrandom() { m_z = 36969 * (m_z & 65535) + (m_z >> 16); m_w = 18000 * (m_w & 65535) + (m_w >> 16); return ((m_z << 16) + m_w) % M; }