On 11/4/11 10:25 AM, sebb wrote:
> On 4 November 2011 16:20,  <pste...@apache.org> wrote:
>> Author: psteitz
>> Date: Fri Nov  4 16:20:05 2011
>> New Revision: 1197626
>>
>> URL: http://svn.apache.org/viewvc?rev=1197626&view=rev
>> Log:
>> Changed default non-secure generator to Well19937c and changed default seeds 
>> to add system identity haschode to timestamp.  JIRA: MATH-701.
> You've actually use the object hashcode - did you mean to use
> j.l.System.indentityHashcode() ?

Yes, maybe I am wrong, but I thought that's what you got by default
when hashcode is not overridden.  What we want is just something
that will be unique by instance (with high probability) and is
relatively fast to compute.

Phil
>
>> Modified:
>>    
>> commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java
>>
>> Modified: 
>> commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java
>> URL: 
>> http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java?rev=1197626&r1=1197625&r2=1197626&view=diff
>> ==============================================================================
>> --- 
>> commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java
>>  (original)
>> +++ 
>> commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java
>>  Fri Nov  4 16:20:05 2011
>> @@ -49,7 +49,7 @@ import org.apache.commons.math.util.Resi
>>  * instance to generate non-secure data and a {@link 
>> java.security.SecureRandom}
>>  * instance to provide data for the <code>nextSecureXxx</code> methods. If no
>>  * <code>RandomGenerator</code> is provided in the constructor, the default 
>> is
>> - * to use a generator based on {@link java.util.Random}. To plug in a 
>> different
>> + * to use a {@link Well19937c} generator. To plug in a different
>>  * implementation, either implement <code>RandomGenerator</code> directly or
>>  * extend {@link AbstractRandomGenerator}.
>>  * <p>
>> @@ -81,10 +81,10 @@ import org.apache.commons.math.util.Resi
>>  * When a new <code>RandomDataImpl</code> is created, the underlying random
>>  * number generators are <strong>not</strong> initialized. If you do not
>>  * explicitly seed the default non-secure generator, it is seeded with the
>> - * current time in milliseconds on first use. The same holds for the secure
>> - * generator. If you provide a <code>RandomGenerator</code> to the 
>> constructor,
>> - * however, this generator is not reseeded by the constructor nor is it 
>> reseeded
>> - * on first use.</li>
>> + * current time in milliseconds plus the system identity hash code on first 
>> use.
>> + * The same holds for the secure generator. If you provide a 
>> <code>RandomGenerator</code>
>> + * to the constructor, however, this generator is not reseeded by the 
>> constructor
>> + * nor is it reseeded on first use.</li>
>>  * <li>
>>  * The <code>reSeed</code> and <code>reSeedSecure</code> methods delegate to 
>> the
>>  * corresponding methods on the underlying <code>RandomGenerator</code> and
>> @@ -827,7 +827,8 @@ public class RandomDataImpl implements R
>>     /**
>>      * Returns the RandomGenerator used to generate non-secure random data.
>>      * <p>
>> -     * Creates and initializes a default generator if null.
>> +     * Creates and initializes a default generator if null. Uses a {@link 
>> Well19937c}
>> +     * generator with {@code System.currentTimeMillis() + hashCode()} as 
>> the default seed.
>>      * </p>
>>      *
>>      * @return the Random used to generate random data
>> @@ -835,8 +836,7 @@ public class RandomDataImpl implements R
>>      */
>>     private RandomGenerator getRan() {
>>         if (rand == null) {
>> -            rand = new JDKRandomGenerator();
>> -            rand.setSeed(System.currentTimeMillis());
>> +            rand = new Well19937c(System.currentTimeMillis() + hashCode());
>>         }
>>         return rand;
>>     }
>> @@ -844,7 +844,8 @@ public class RandomDataImpl implements R
>>     /**
>>      * Returns the SecureRandom used to generate secure random data.
>>      * <p>
>> -     * Creates and initializes if null.
>> +     * Creates and initializes if null.  Uses
>> +     * {@code System.currentTimeMillis() + hashCode()} as the default seed.
>>      * </p>
>>      *
>>      * @return the SecureRandom used to generate secure random data
>> @@ -852,7 +853,7 @@ public class RandomDataImpl implements R
>>     private SecureRandom getSecRan() {
>>         if (secRand == null) {
>>             secRand = new SecureRandom();
>> -            secRand.setSeed(System.currentTimeMillis());
>> +            secRand.setSeed(System.currentTimeMillis() + hashCode());
>>         }
>>         return secRand;
>>     }
>>
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to