[comp.sources.misc] v03i058: Reagan Countdown Program!

heckbert.pa@xerox.com (06/23/88)

comp.sources.misc: Volume 3, Issue 58
Submitted-By: "A. Nonymous" <heckbert.pa@xerox.com>
Archive-Name: rrcount

[I love it!!!  Shar'ed and modified so V7ers can use rand() and S5ers can use
lrand48.  (Dumbshar.)  ++bsa]

Here is a handy program to tell you how many days Reagan has left in office.
Run it from your .login.
It brightens my day to see this number decreasing every time I log in!
(It will also help you plan for the big party we must have when Reagan's term
is over).

echo x - rrcount.c
sed 's/^X//' << \EOF > rrcount.c
X/*
X * rrcount.c: Reagan Countdown program
X * Paul Heckbert, ph@degas.berkeley.edu		9 Mar 1988
X */
X
X#define BSD				/* use BSD rng */
X/*#define USG				/* use USG rng; otherwise V7 */
X
X#define SEC_PER_DAY (24*3600)
X#define REAGAN_TIMEOUT 601329600	/* inauguration day
X					noon, 20 Jan 1989: time to rejoice! */
X
Xstatic char *gipname[] = {
X    "President Reagan",
X    "Ronald Wilson Reagan",
X    "the Insane Anglo War-Lord",	/* anagram for "Ronald Wilson Reagan" */
X    "Ronnie-boy",
X    "Ronnie Ray-gun",
X    "the gipper",
X    "the geezer",
X    "Bedtime for Bonzo",
X    "\"The Great Communicator\"",
X    "the jelly bean king",
X    "mr. 3x5 card",
X};
X#define GIPNUM (sizeof gipname/sizeof gipname[0])
X
Xdouble frandom();
X
Xmain()
X{
X    long t;
X    int i;
X
X    t = time(0);
X    srandom(t);
X    for (i=0; i<30; i++) random();
X    t = REAGAN_TIMEOUT-t;
X    printf("%d more days of %s\n", t/SEC_PER_DAY,
X	gipname[(int)(GIPNUM*frandom())]);
X}
X
Xdouble frandom()		/* random number between 0 and 1 */
X{
X#ifdef BSD
X    return random()/2147483647.;
X#endif
X#ifdef SYSV
X    extern double drand48();
X
X    srand48(time(0) + getpid());
X    return drand48();
X#endif
X#if !(defined(BSD) || defined(SYSV))
X    srand((unsigned) time((long *) 0) + getpid());
X    return rand() / ((double) (2 << 15) - 1);
X#endif
X}
EOF
exit 0