[Insight-users] random number generator

Stefan Klein stefan at isi.uu.nl
Wed Mar 16 10:34:13 EST 2005

Hi Daniel,

I'm sorry, I did not subscribe to the developer list, only the user-list. I 
just subscribed. You are right that a random generator should behave the 
same on different platforms. The vnl_random would solve this problem as well.
btw: The boost-library also has a good source of random-generators.


At 10:04 16/03/05, Blezek, Daniel J (Research) wrote:
>Stefan,  I started a thread on this a while ago relating to 
>non-deterministic behavior across platforms.  If the ITK design committee 
>approves the move, it would be great to standardize the random number 
>generator to be sufficiently random, fast and generate the same sequences 
>(from a given seed) across platforms.  The discussion culminated with 
>Brad's post: 
>I'm not sure any action happened on the suggestions.
>As you point out, many registration algorithms depend on random sampling, 
>exactly where I came across the problem.
>-----Original Message-----
>From: insight-users-bounces at itk.org 
>[mailto:insight-users-bounces at itk.org]On Behalf Of Stefan Klein
>Sent: Wednesday, March 16, 2005 9:16 AM
>To: Insight-users at itk.org
>Subject: [Insight-users] random number generator
>Dear itk-users,
>I did some tests with the underlying random generator of the 
>itkImageRandomIteratorWithIndex and it seems that, in Windows, it is 'not 
>very random'.
>The itkImageRandomIterator uses the following random-generator:
>In Linux the drand48 random-generator is used, which is a good choice.
>In Windows however a "simple congruential random number generator" is 
>implemented, since drand48 is not available in Windows. This gives 
>inferior results, in my experience.
>To get a feel for the result look at the image1.<mhd/raw>, which is in the 
>file: randomtestresults.zip, which you can download from: 
>The gray-values in this image show how many times a pixel was sampled. The 
>process works was defined as follows:
>    "An ImageRegionIterator walks N=200 times through the image and tests
>    at each voxel whether to sample it or not. The test is performed by
>    drawing a number between 0 and 1 using the random generator defined in
>    vnl_sample.h; a value >=0.5 means that the voxel is sampled"
>As you can see in the image the pixels are not really selected at random...
>If we use the itkImageRandomIteratorWithIndex to sample the image, the 
>result (image3.<mhd,raw>) may look better at first sight, but the 
>histogram looks terrible.
>On the internet I found the following link:
>It describes the files vnl_random.<h,cxx>; those files are not included in 
>the vxl-version that comes with ITK. I tried to use these as a random 
>generator. The results are now much better. Image2, which is generated in 
>the same was as image1, but with the random generator defined in 
>vnl_random, does not show any structure anymore. Image4, which is 
>generated using an ImageRandomIterator that uses the vnl_random as its 
>underlying random number generator, has the histogram that you would expect.
>For more details please look at the source of the test program, which you 
>can also download from http://www.isi.uu.nl/People/Stefan/ : 
>itkrandomtestsource.zip. You may reproduce the results with this program. 
>Note that only in Windows bad results will be obtained. In Linux there is 
>no problem.
>Algorithms that rely on a good random generator may fail if you use the 
>itkRandomImageIteratorWithIndex under Windows. For example, in my research 
>on nonrigid registration I tried to use a stochastic gradient descent 
>optimisation method for minimising the MattesMutualInformation in 
>combination with a B-spline transform (it may speed up your registration 
>algorithms; if you are interested:
>http://www.isi.uu.nl/Research/Publications/publicationview.php?id=1011 ). 
>When I used the itkImageRandomConstIteratorWithIndex for selecting spatial 
>samples the registration results got significantly worse than when I used 
>the itkImageMoreRandomConstIteratorWithIndex (which uses the vnl_random as 
>underlying random number generator).
>Any comments on this would be appreciated!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20050316/6bdcca1f/attachment.html

More information about the Insight-users mailing list