Random number generator
 Micha³_C
[
Home
]
[ Index:
by date

by threads
]
[ Message by date: previous  next ] [ Message in thread: previous  next ] [ Thread: previous  next ]
[ Message by date: previous  next ] [ Message in thread: previous  next ] [ Thread: previous  next ]
Date:  20080930 (13:17) 
From:  Micha³_C <ciebiada@g...> 
Subject:  Random number generator 
Hello! Do You maybe have any idea how good is the standard RNG from random.ml module? I know that it's quite fast but what about the quality of generated numbers? I've tried implementing various random number generators for the whole yesterday but I couldn't bypass ocaml's int limitations. Almost everything bases on unsigned integers (0..2^321) so despiting the fact my range is half of that (using Int32) I'm having troubles when integer overflows... I would like to implement combined MWC (multiple with carry) algorithm based on 2 x 16bit mwc's. I'ts very easy (at last in c/c++ where i can use unsigned ints), fast and according to what I've read it's generating very nice random numbers. It goes like this: z = w= some seeds (big numbers) z = 36969 * (z & 65535) + (z >> 16) w = 18000 * (w & 65535) + (w >> 16) return ( (z << 16) + (w & 65535) ) // combining two 16 bit numbers to one 32 bit but i cant think of anything by myself, i mean i could use some "abs" or something but i doubt it wouldn't ruin the whole algorithm. P.S. some time ago I promised that I will keep you informed how my ray tracer will do, here it is: http://neos1.blogspot.com