]> granicus.if.org Git - php/commitdiff
improve seed calculation
authorStanislav Malyshev <stas@php.net>
Fri, 7 Mar 2008 03:36:58 +0000 (03:36 +0000)
committerStanislav Malyshev <stas@php.net>
Fri, 7 Mar 2008 03:36:58 +0000 (03:36 +0000)
# better solution would be to port mt's multi-value seed procedure

ext/standard/php_rand.h

index 50fddcdf2603810f167e4cb5a37f0bc37c5b2bac..804a14b2aa248dc4cb7ab692f4c4b63347201402 100644 (file)
@@ -47,9 +47,9 @@
 #define PHP_MT_RAND_MAX ((long) (0x7FFFFFFF)) /* (1<<31) - 1 */ 
 
 #ifdef PHP_WIN32
-#define GENERATE_SEED() ((long) (time(0) * GetCurrentProcessId() * 1000000 * php_combined_lcg(TSRMLS_C)))
+#define GENERATE_SEED() (((long) (time(0) * GetCurrentProcessId())) ^ ((long) (1000000.0 * php_combined_lcg(TSRMLS_C))))
 #else
-#define GENERATE_SEED() ((long) (time(0) * getpid() * 1000000 * php_combined_lcg(TSRMLS_C)))
+#define GENERATE_SEED() (((long) (time(0) * getpid())) ^ ((long) (1000000.0 * php_combined_lcg(TSRMLS_C)))))
 #endif
 
 PHPAPI void php_srand(long seed TSRMLS_DC);