> On Aug 27, 2015, at 5:35 PM, Jed Brown <[email protected]> wrote:
> 
> Barry Smith <[email protected]> writes:
>>   This is the default behavior if one just creates a PetscRandom and uses 
>> it, so don't be going and setting seeds inside GAMG or Chebyshev.
> 

   Yikes, you are right all three of our current random number generators have 
global state! What a mess. We should remove all them completely and we can 
complement Matt's by adding in a more modern version of Sprng that does not use 
global state. (Stupid Sprng fucks changed to C++)

   Barry

> You're right (my mistake), but the consequences are dangerous if the
> user is holding a PetscRandom across calls to GAMG (or anything that
> creates new PetscRandom instances).  The reason is that merely creating
> a PetscRandom reseeds the global PRNG.  (What moron thought a global
> seed was a good idea?)  Seems to me we should avoid drand48 always so we
> don't disrupt the user's source of randomness (leading to really
> confusing incorrect results).  We could use the non-disastrous
> drand48_r, but it's a GNU extension so we'd need an alternative anyway.
> 
> If Matt changes "rander48" to the rand48_r (or erand48_r) interface,
> then we'd be okay.  This would also remove the internal variables that
> Matt forget to make static.

Reply via email to