Here is one algorithm suggested by Wikipedia (don’t ask how it works):
m_z = 36969 * (m_z & 65535) + (m_z >> 16)
m_w = 18000 * (m_w & 65535) + (m_w >> 16)
return (m_z << 16) + (m_w & 65535)
It needs two seeds m_z and m_w. I guess it is ok to take the seeds from time() function:
The time module again is a standard Python module, so it may not be available in game engine, so in that case use the Blender.sys.time() function commented out in previous code. Now if you call random_uint(t1,t2) you get big random number. Next time use the previous m_z and m_w as seeds.
You may want to take the modulo from this r=random_uint(), in your case r%10, and maybe shuffle the card deck [1,2,3,4,5,6,7,8,9,10] accordingly.