/* -*-c-*-
*
- * $Id: fibrand.c,v 1.2 2000/06/17 10:55:24 mdw Exp $
+ * $Id: fibrand.c,v 1.3 2000/12/06 20:31:06 mdw Exp $
*
* Fibonacci generator
*
/*----- Revision history --------------------------------------------------*
*
* $Log: fibrand.c,v $
+ * Revision 1.3 2000/12/06 20:31:06 mdw
+ * Simplify uniform range transformation.
+ *
* Revision 1.2 2000/06/17 10:55:24 mdw
* Typesetting fixes. Add flags word to generatic random generator.
*
/* --- Now generate numbers until a good one comes along --- */
do x = fibrand_step(f); while (x >= r);
- return (x / (r / m));
+ return (x % m);
}
/*----- Generic interface -------------------------------------------------*/
/* -*-c-*-
*
- * $Id: grand.c,v 1.1 1999/12/10 23:16:01 mdw Exp $
+ * $Id: grand.c,v 1.2 2000/12/06 20:31:06 mdw Exp $
*
* Generic interface to random number generators
*
/*----- Revision history --------------------------------------------------*
*
* $Log: grand.c,v $
+ * Revision 1.2 2000/12/06 20:31:06 mdw
+ * Simplify uniform range transformation.
+ *
* Revision 1.1 1999/12/10 23:16:01 mdw
* Generic interface.
*
*/
z = m - (m % l);
- m = z / l;
/* --- Generate numbers until something acceptable is found --- *
*
*/
do x = w(r); while (x >= z);
- return (x / m);
+ return (x % l);
}
}
/* -*-c-*-
*
- * $Id: lcrand.c,v 1.3 2000/06/17 11:29:03 mdw Exp $
+ * $Id: lcrand.c,v 1.4 2000/12/06 20:31:06 mdw Exp $
*
* Simple linear congruential generator
*
/*----- Revision history --------------------------------------------------*
*
* $Log: lcrand.c,v $
+ * Revision 1.4 2000/12/06 20:31:06 mdw
+ * Simplify uniform range transformation.
+ *
* Revision 1.3 2000/06/17 11:29:03 mdw
* Add the flags word to the generic generator.
*
uint32 r = P - P % m;
do xx = lcrand(xx); while (xx >= r);
*x = xx;
- return (xx / (r / m));
+ return (xx % m);
}
/*----- Generic interface -------------------------------------------------*/