Return to php_rand.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard |
1.1 ! misho 1: /* ! 2: +----------------------------------------------------------------------+ ! 3: | PHP Version 5 | ! 4: +----------------------------------------------------------------------+ ! 5: | Copyright (c) 1997-2012 The PHP Group | ! 6: +----------------------------------------------------------------------+ ! 7: | This source file is subject to version 3.01 of the PHP license, | ! 8: | that is bundled with this package in the file LICENSE, and is | ! 9: | available through the world-wide-web at the following url: | ! 10: | http://www.php.net/license/3_01.txt | ! 11: | If you did not receive a copy of the PHP license and are unable to | ! 12: | obtain it through the world-wide-web, please send a note to | ! 13: | license@php.net so we can mail you a copy immediately. | ! 14: +----------------------------------------------------------------------+ ! 15: | Authors: Rasmus Lerdorf <rasmus@php.net> | ! 16: | Zeev Suraski <zeev@zend.com> | ! 17: | Pedro Melo <melo@ip.pt> | ! 18: | Sterling Hughes <sterling@php.net> | ! 19: | | ! 20: | Based on code from: Shawn Cokus <Cokus@math.washington.edu> | ! 21: +----------------------------------------------------------------------+ ! 22: */ ! 23: /* $Id: php_rand.h 321634 2012-01-01 13:15:04Z felipe $ */ ! 24: ! 25: #ifndef PHP_RAND_H ! 26: #define PHP_RAND_H ! 27: ! 28: #include <stdlib.h> ! 29: #include "basic_functions.h" ! 30: ! 31: /* System Rand functions */ ! 32: #ifndef RAND_MAX ! 33: #define RAND_MAX (1<<15) ! 34: #endif ! 35: ! 36: /* In ZTS mode we rely on rand_r() so we must use RAND_MAX. */ ! 37: #if !defined(ZTS) && (defined(HAVE_LRAND48) || defined(HAVE_RANDOM)) ! 38: #define PHP_RAND_MAX 2147483647 ! 39: #else ! 40: #define PHP_RAND_MAX RAND_MAX ! 41: #endif ! 42: ! 43: #define RAND_RANGE(__n, __min, __max, __tmax) \ ! 44: (__n) = (__min) + (long) ((double) ( (double) (__max) - (__min) + 1.0) * ((__n) / ((__tmax) + 1.0))) ! 45: ! 46: /* MT Rand */ ! 47: #define PHP_MT_RAND_MAX ((long) (0x7FFFFFFF)) /* (1<<31) - 1 */ ! 48: ! 49: #ifdef PHP_WIN32 ! 50: #define GENERATE_SEED() (((long) (time(0) * GetCurrentProcessId())) ^ ((long) (1000000.0 * php_combined_lcg(TSRMLS_C)))) ! 51: #else ! 52: #define GENERATE_SEED() (((long) (time(0) * getpid())) ^ ((long) (1000000.0 * php_combined_lcg(TSRMLS_C)))) ! 53: #endif ! 54: ! 55: PHPAPI void php_srand(long seed TSRMLS_DC); ! 56: PHPAPI long php_rand(TSRMLS_D); ! 57: PHPAPI void php_mt_srand(php_uint32 seed TSRMLS_DC); ! 58: PHPAPI php_uint32 php_mt_rand(TSRMLS_D); ! 59: ! 60: #endif /* PHP_RAND_H */