rand - gives a random number



Name
       rand - gives a random number

Syntax
       rand [[low] high]

       rand -h

Description
       Outputs  a  random  number between low and high (inclusive).  If low is
       omitted, 0 is assumed. If both omitted, 0 and RAND_MAX is used.

Example
       $ rand 10 20
       18

See Also
       rand(3)

Environment
       PATH=$PATH:/home/joppa/horton/bin/{HPPA,RISC}

       MANPATH=$MANPATH:/home/joppa/horton/man

Author
       David Horton - CiTR

Copyright
       Centre for Information Technology Research, 1994

/**************************************************************************
 *
 * COPYRIGHT (C) Centre for Information Technology Research, 1994
  *
 * Project:     Internal
 *
 * File:        rand.c
 *$Source$
 *
 * Author:      David Horton
 *
 * Reference:   Refer to man (1) rand
 *
 * Description: output random numbers on stdout
 *
 * History:
 *$Log$
 *
 *************************************************************************/

static char rcs[] = "@(#)$RCSfile$ $Revision$";

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

usage(char *n) {
                        fprintf(stderr,"Usage: %s [[low] high]\n", n);
                        exit (1);
                }

main (int argc, char *argv[]) {

        int             low = 0;
        int             high = RAND_MAX;

        int             v;

        int             arg;

        for (arg = 1; arg < argc; arg++)
                if (strcmp(argv[arg], "-h") == 0) {
                        usage(argv[0]);
                }

        v = getpid();
        srand(v);
        v = rand();

        switch(argc) {
        case 1: /* no args */
                break;
        case 2: /* just upper */
                high = atoi(argv[1])+1;
                v %= high;
                break;
        case 3: /* low and high */
                low = atoi(argv[1]);
                high = atoi(argv[2]);
                v = (v % (high-low+1)) + low;
                break;
        default:
                usage(argv[0]);
                break;
        }

        printf("%d\n", v);
        exit (0);
}