shufrans - random number shufflers
cc [ flag ... ] file ... -lsunmath -lm [ library ... ] #include <sunmath.h>
void i_shufrans_(int *x, int *n, int *l, int *u);
void u_shufrans_(unsigned *x, int *n, unsigned *l, unsigned*u);
void r_shufrans_(float *x, int *n, float *l, float *u);
void d_shufrans_(double *x, int *n, double *l, double *u);
These functions shuffle the random numbers x, ..., x[*n-1] in place. The numbers may have been generated by any method but are assumed to be uniformly distributed over the interval [*l,*u]. (If any number lies outside this interval, the results are undefined.)
These routines use the method called "Algorithm B" by Knuth. They use an internal table of between 4 and 256 elements depending on *n.
To shuffle 1000 double precision random numbers in [lb, ub]:
double x, lb, ub; int n = 1000; d_shufrans_(x, &n, &lb, &ub);
See attributes(7) for descriptions of the following attributes:
Knuth, Seminumerical Algorithms, 1981, Addison-Wesley.
Park and Miller, Random Number Generators: Good Ones are Hard to Find, Communications of the ACM, October 1988.