Categories:
.NET (357)
C (330)
C++ (183)
CSS (84)
DBA (2)
General (7)
HTML (4)
Java (574)
JavaScript (106)
JSP (66)
Oracle (114)
Perl (46)
Perl (1)
PHP (1)
PL/SQL (1)
RSS (51)
Software QA (13)
SQL Server (1)
Windows (1)
XHTML (173)
Other Resources:
I need a random number generator.
I need a random number generator.
✍: Guest
The Standard C library has one: rand. The implementation on your system may not be perfect, but writing a better one isn't necessarily easy, either.
Here is a portable C implementation of the ``minimal standard'' generator :
#define a 16807
#define m 2147483647
#define q (m / a)
#define r (m % a)
static long int seed = 1;
long int PMrand()
{
long int hi = seed / q;
long int lo = seed % q;
long int test = a * lo - r * hi;
if(test > 0)
seed = test;
else seed = test + m;
return seed;
}
(The ``minimal standard'' is adequately good; it is something ``against which all others should be judged''; it is recommended for use ``unless one has access to a random number generator known to be better.'')
This code implements the generator
X <- (aX + c) mod m
for a = 16807, m = 2147483647 (which is 2**31-1), and c = 0. The multiplication is carried out using a technique described by Schrage, ensuring that the intermediate result aX does not overflow. The implementation above returns long int values in the range [1, 2147483646]; that is, it corresponds to C's rand with a RAND_MAX of 2147483646, except that it never returns 0. To alter it to return floating-point numbers in the range (0, 1), change the declaration to
double PMrand()
and the last line to
return (double)seed / m;
For slightly better statistical properties, now recommend using a = 48271.
2015-08-03, 2054👍, 0💬
Popular Posts:
How To Enter a New Row into a Table Interactively? - Oracle DBA FAQ - Introduction to Oracle SQL Dev...
Why is it preferred to not use finalize for clean up? Problem with finalize is that garbage collecti...
What Are the Parameter Modes Supported by PL/SQL? - Oracle DBA FAQ - Creating Your Own PL/SQL Proced...
Why does malloc(0) return valid memory address? What's the use? malloc(0) does not return a non-NULL...
How you will enable front-end validation based on the xml in validation.xml? The <html:javascr...