// A random number generator. Values range from -1..1 float semirand( int x) ... { x = (x<<13) ^ x; return ( 1.0f - ( (x * (x * x * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0f); }