shufrans - random number shufflers
cc [ flag ... ] file ... -lsunmath -lm [ library ... ]
void i_shufrans_(int *x, int *n, int *l, int *u);
void u_shufrans_(unsigned *x, int *n, unsigned *l, unsigned
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);
addrans(3M), drand48(3C), lcrans(3M), mwcrans(3M), rand(3C),
Knuth, Seminumerical Algorithms, 1981, Addison-Wesley.
Park and Miller, Random Number Generators: Good Ones are
Hard to Find, Communications of the ACM, October 1988.