summaryrefslogtreecommitdiffstats
path: root/lib/qrand.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/qrand.c')
-rw-r--r--lib/qrand.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/qrand.c b/lib/qrand.c
index 402bb432..a395b92c 100644
--- a/lib/qrand.c
+++ b/lib/qrand.c
@@ -32,17 +32,16 @@
*
* If range == 1, returns 0 every time !
*/
-extern int
-qrand(qrand_seq seq, int range)
+extern uint
+qrand(qrand_seq seq, uint range)
{
uint64_t r ;
- r = seq->last ^ 3141592653 ;
- r = ((r * 2650845021) + 5) & 0xFFFFFFFF ; /* see Knuth */
+ r = ((seq->last * 2650845021) + 5) & 0xFFFFFFFF ; /* see Knuth */
seq->last = r ;
if (range == 0)
return r >> 1 ;
else
- return (r % range) ;
+ return (r * range) >> 32 ;
} ;