]> git.mxchange.org Git - flightgear.git/blob - Math/fg_random.c
Converted to new logstream debugging facility. This allows release
[flightgear.git] / Math / fg_random.c
1 /**************************************************************************
2  * fg_random.c -- routines to handle random number generation
3  *
4  * Written by Curtis Olson, started July 1997.
5  *
6  * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of the
11  * License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21  *
22  * $Id$
23  * (Log is kept at end of this file)
24  **************************************************************************/
25
26
27 #ifdef HAVE_CONFIG_H
28 #  include <config.h>
29 #endif
30
31 #include <stdio.h>
32 #include <stdlib.h>         /* for random(), srandom() */
33 #include <time.h>           /* for time() to seed srandom() */        
34
35 /* #include <Debug/fg_debug.h> */
36
37 #include "fg_random.h"
38
39 #ifndef HAVE_RAND
40 #  ifdef sgi
41 #    undef RAND_MAX
42 #    define RAND_MAX 2147483647
43 #  endif
44 #endif
45
46 #ifdef __SUNPRO_CC
47     extern "C" {
48         long int random(void);
49         void srandom(unsigned int seed);
50     }
51 #endif
52
53
54 /* Seed the random number generater with time() so we don't see the
55  * same sequence every time */
56 void fg_srandom(void) {
57     /* fgPrintf( FG_MATH, FG_INFO, "Seeding random number generater\n"); */
58
59 #ifdef HAVE_RAND
60     srand(time(NULL));
61 #else
62     srandom(time(NULL));
63 #endif                                       
64 }
65
66
67 /* return a random number between [0.0, 1.0) */
68 double fg_random(void) {
69 #ifdef HAVE_RAND
70     return(rand() / (double)RAND_MAX);
71 #else
72     return(random() / (double)RAND_MAX);
73 #endif
74 }
75
76
77 /* $Log$
78 /* Revision 1.9  1998/11/06 21:17:26  curt
79 /* Converted to new logstream debugging facility.  This allows release
80 /* builds with no messages at all (and no performance impact) by using
81 /* the -DFG_NDEBUG flag.
82 /*
83  * Revision 1.8  1998/04/25 22:06:23  curt
84  * Edited cvs log messages in source files ... bad bad bad!
85  *
86  * Revision 1.7  1998/04/24 00:43:13  curt
87  * Wrapped "#include <config.h>" in "#ifdef HAVE_CONFIG_H"
88  *
89  * Revision 1.6  1998/04/18 03:53:42  curt
90  * Miscellaneous Tweaks.
91  *
92  * Revision 1.5  1998/04/03 22:10:29  curt
93  * Converting to Gnu autoconf system.
94  *
95  * Revision 1.4  1998/02/03 23:20:28  curt
96  * Lots of little tweaks to fix various consistency problems discovered by
97  * Solaris' CC.  Fixed a bug in fg_debug.c with how the fgPrintf() wrapper
98  * passed arguments along to the real printf().  Also incorporated HUD changes
99  * by Michele America.
100  *
101  * Revision 1.3  1998/01/27 00:47:59  curt
102  * Incorporated Paul Bleisch's <pbleisch@acm.org> new debug message
103  * system and commandline/config file processing code.
104  *
105  * Revision 1.2  1997/12/30 20:47:48  curt
106  * Integrated new event manager with subsystem initializations.
107  *
108  * Revision 1.1  1997/07/30 16:04:09  curt
109  * Moved random routines from Utils/ to Math/
110  *
111  * Revision 1.1  1997/07/19 22:31:57  curt
112  * Initial revision.
113  *
114  */