Annotation of embedaddon/php/ext/standard/php_rand.h, revision 1.1.1.1
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 */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>