Provided by: ltp-dev_20091231+dfsg-1ubuntu2_amd64 bug

NAME

       random_range  - a set of routines for dealing with integer ranges, and random numbers in a
       range

SYNOPSIS

       void random_range_seed(int seed)
       long random_range(int min, int max, int mult, char **errp)
       long random_rangel(long min, long max, long mult, char **errp)
       long long random_rangell(long long min, long long max,
                          long long mult, char **errp)
       long random_bit(long mask)

DESCRIPTION

       This is a set of routines for parsing numeric ranges, and choosing random numbers  from  a
       range.

       random_range()  chooses  a  random  number  in  the  range  min-max (inclusive) which is a
       multiple of mult.  min and max may be any integer, but mult must  be  a  positive  integer
       greater  than  0.  errp is a char ** which is used to detect error conditions.  If errp is
       not NULL, *errp will be set to point  to  an  error  message.   If  errp  is  NULL,  error
       conditions  cannot  be detected by the caller.  If mult is 1 (the most common case), there
       are no possible error conditions, and the return value is guaranteed to be valid.

       random_range_seed() sets the random number generator seed to the specified value.

       random_bit() will return a randomly selected single bit bitmask from the bits set in mask.
       The bit is randomly chosen using random_range().  If mask is zero, zero is returned.

       random_range()  functions uses lrand48() internally.  If the range is bigger than will fit
       in a 32 bit long (2G), lrand48() with a a internal recursive algorithm to produce a random
       number.

EXAMPLES


       #include <stdio.h>

       main(argc, argv)
       int argc;
       char  **argv;
       {
         int   r;
         char  *errp;
         extern voidrandom_range_seed();
         extern longrandom_range();

         random_range_seed(getpid());

         r = random_range(atoi(argv[1]), atoi(argv[2]), atoi(argv[3]), &errp);
         if (errp == NULL) {
           fprintf(stderr, "random_range failed:  %s0, errp);
           exit(1);
         } else {
           printf("%d0, r);
         }

         exit(0);
       }

SEE ALSO

       lrand48(3c)

DIAGNOSTICS

       If  random_range() fails, errp will point to NULL, and the return value will be undefined.
       If mult is 1, there are no possible error conditions, so the return value is always  valid
       in this case.

BUGS

       On  CRAY  systems,  random_range(),  random_rangel(), random_rangell() all have the 64 bit
       limit since int, long and long long are always 64 bits.

       On IRIX systems, random_range() can  only  produce  a  32  number.   random_rangel()  when
       compiled  as  a  32 bit object is still limited to 32 bit number.  random_rangell() can be
       used to return a value bigger than 32 bits even when compiled as a 32 bit object.