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 19:09:21 GMT
On 11/4/11 10:50 AM, sebb wrote:
> On 4 November 2011 17:44, Phil Steitz <phil.steitz@gmail.com> wrote:
>> 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.
> Yes, you do get that if it is not overridden, but if the hashcode is
> later overriden then:
> - the Javadoc will not be accurate
> - it may not be as quick to compute.
>
> It would be easy to overlook this in a future update, so I'd recommend
> using what the Javadoc says.

Thanks for reviewing this.  Fixed in r1197716.

Phil
>
>> 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
>>
>>
> ---------------------------------------------------------------------
> 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