CHANGELOG for Crypt::Random
           $Id: Changes,v 1.6 2001/07/12 15:59:46 vipul Exp $

--------------------------------------------------------------------------

1.20                                                        April 21, 2004

 * Added a Uniform option to makerandom() and makerandom_itv() that 
   doesn't set the high bit of the generated random, and produces
   a number uniformally distributed in the interval. Thanks to Len
   Budney for pointing this out.  

   Here's his explaination:

   If Size is increased to 4 bits, then of 16 values, there are 5 ways to
   get a 1, 5 ways to get a 2, but 6 ways to get a 0. Thus 0 will occur
   6/5 = 1.2 times more often than 1 or 2. Increasing size to 6 bits,
   there are (2^6-1)/3 ways to get a 1 or 2, but there are (2^6+2)/3
   ways to get a 0, and a 0 will occur more often by a factor of
   (2^6+2)/(2^6-1).

   If Size is then bumped up to 40, as makerandom_itv does, then 0 will
   still happen more often than 1 or 2, but now it happens only
   (2^40+2)/(2^40-1) times more often, or about 1 + 2.7*10^-12 times more
   often. This difference is too small to observe in a practical
   experiment, but it is still a deviation from uniformity.

   What's going on is that when ($b-$a) does not evenly divide 2^N, the
   outcome ($b-1) is less likely to happen than the outcome $a. The case
   that Size=2, $a=0 and $b=3 illustrates this most clearly.

   This is easy to correct: we simply want to make the largest value of
   makerandom() to be evenly divisible by ($b-$a), by ignoring any result
   which is >= (2^Size - (2^Size % ($b-$a))). The second attached file
   includes the fix, which you will see produces uniform probabilities if
   you perform the test given above.


1.13                                                        March 11, 2003

  * Changed the die() message at provider contruction to include the 
    name of the provider.

1.12                                                         January, 2003

  * Updated documentation.

  * Removed all /home/vipul/* entries from @INC.

1.11                                                         July 12, 2001

  * Applied a patch by Benjamin Trott to make egd detection more 
    robust.

1.10                                                         July 09, 2001

  * Fix in _pickprovider(), thanks to Benjamin Trott for the patch.

1.08                                                         June 22, 2001 

  * Small fixes.

1.07                                                         June 21, 2001

  * A bug fix in ::Provider::egd::get_data().

1.05                                                         June 21, 2001

  * Integrated and extended Benjamin Trott's patches to add provider
    architechture and egd support to Crypt::Random.

  * Wrote Crypt::Random::Generator, and OO interface to Crypt::Random that
    automagically selects a suitable provider.

  * Wrote a Provider that uses perl's rand(). This provider is used when
    no other stronger provider is available.


0.34                                                        April 17, 2001 

  * Wrote exportable makerandom_octet() that generates random octet
    strings. See documentation for details.

  * Wrote a test for makerandom_octet() in t/octet_string.t