+/* $NetBSD: roll.c,v 1.14 2012/06/19 05:35:32 dholland Exp $ */
+
/*
- * Copyright (c) 1980 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1980, 1993
+ * The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
#ifndef lint
-/*static char sccsid[] = "from: @(#)roll.c 5.6 (Berkeley) 9/29/92";*/
-static char rcsid[] = "$Id: roll.c,v 1.4 1993/08/07 08:28:06 mycroft Exp $";
+#if 0
+static char sccsid[] = "@(#)roll.c 8.1 (Berkeley) 5/31/93";
+#else
+__RCSID("$NetBSD: roll.c,v 1.14 2012/06/19 05:35:32 dholland Exp $");
+#endif
#endif /* not lint */
#include <stdlib.h>
+#include "monop.h"
+
/*
* This routine rolls ndie nside-sided dice.
*/
-# define reg register
-
-# if defined(pdp11)
-# define MAXRAND 32767L
-
-roll(ndie, nsides)
-int ndie, nsides; {
-
- reg long tot;
- reg unsigned n, r;
-
- tot = 0;
- n = ndie;
- while (n--)
- tot += rand();
- return (int) ((tot * (long) nsides) / ((long) MAXRAND + 1)) + ndie;
-}
-
-# else
-
-roll(ndie, nsides)
-reg int ndie, nsides; {
-
- reg int tot, r;
- reg double num_sides;
+int
+roll(int ndie, int nsides)
+{
+ long tot;
- num_sides = nsides;
tot = 0;
while (ndie--)
- tot += (r = rand()) * (num_sides / RAND_MAX) + 1;
- return tot;
+ tot += (random() % nsides) + 1;
+ return (int)tot;
}
-# endif