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