commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phil Steitz <phil.ste...@gmail.com>
Subject Re: svn commit: r1197626 - /commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java
Date Fri, 04 Nov 2011 17:44:18 GMT
On 11/4/11 10:25 AM, sebb wrote:
> On 4 November 2011 16:20,  <psteitz@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-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>


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


Mime
View raw message