+ if ($Val < 0)
+ $Val *= -1;
+ if ($Val = 0)
+ return;
+
+ mt_srand(($Val ^ mt_rand(0, $Max)) & $Max);
+ }
+
+
+ // This function initializes the random number generator fairly well.
+ // It also only initializes it once, so you don't accidentally get
+ // the same 'random' numbers twice in one session.
+ function sq_mt_randomize()
+ {
+ global $REMOTE_PORT, $REMOTE_ADDR, $UNIQUE_ID;
+ static $randomized;
+
+ if ($randomized)
+ return;
+
+ // Global
+ sq_mt_seed((int)((double) microtime() * 1000000));
+ sq_mt_seed(md5($REMOTE_PORT . $REMOTE_ADDR . getmypid()));
+
+ // getrusage
+ if (function_exists("getrusage")) {
+ $dat = getrusage();
+ sq_mt_seed(md5($dat["ru_nswap"] . $dat["ru_majflt"] .
+ $dat["ru_utime.tv_sec"] . $dat["ru_utime.tv_usec"]));
+ }
+
+ // Apache-specific
+ sq_mt_seed(md5($UNIQUE_ID));
+
+ $randomized = 1;
+ }
+
+ function OneTimePadCreate ($length=100) {
+ sq_mt_randomize();