note 49237 deleted from function.mt-srand by googleguy

From: Date: Tue, 22 Oct 2013 10:14:14 +0000
Subject: note 49237 deleted from function.mt-srand by googleguy
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-196922@lists.php.net to get a copy of this message
Note Submitter: Schrecktech ---- ::: My seeding report ::: For FreeBSD 4.8-STABLE PHP 4.3.10 it was good enough and faster to not seed at all...although I did not test the random pseudo terminal. In detail only seeding once by a previous seed using the hex version (case 3 below) for larger numbers and longer run times faired the best. For small numbers it was better to not seed at all (let alone faster). Play with the $loop and $max numbers to see... <? function get_a_good_seed ( $choice = 3 ) { static $seed; $seed = 0; switch($choice) { case 1: // from php.net documentation. list($usec, $sec) = explode(' ', microtime()); $seed = (float) $sec + ((float) $usec * 1000000); break; case 2: // from high primary number. $seed = (double)microtime()*1000003; break; case 3: // from a good random source. $seed = hexdec(substr(md5(microtime()), -8)) & 0x7fffffff; break; case 4: // from random terminal // NOT TESTED break; default: break; } return($seed); } function load_last_random ( ) { static $last; static $handle; // NOTE: create this file with a random integer... $handle = fopen("random.txt", "r"); while (!feof($handle)) { $last = fgets($handle, 4096); } fclose($handle); return($last); } function save_last_random ( $save = 0 ) { $handle = fopen("random.txt", "w"); fwrite($handle, $save); fclose($handle); } function seed_random_number_generator ( $type = 3, $ignore_generated_already = FALSE ) { static $generator_seeded = FALSE; if($ignore_generated_already || !$generator_seeded) { // 1) load last with time...force integer. // 2) generate a new random seed and save for next time... mt_srand(( load_last_random()+get_a_good_seed($type) ) & 0x7fffffff); save_last_random(mt_rand()); $generator_seeded= TRUE; } } ?>

« previous php.notes (#196922) next »