[Mono-osx] bug in Random
mono-osx at iaincollins.com
Sun Jan 25 16:59:27 EST 2009
On 25 Jan 2009, at 20:17, Duane Wandless wrote:
> Rodrigo is on the Mono team and has already answered you.
> Not very obvious he (kumpera at gmail.com) is on the Mono team...
> actually it just seemed like the response was from a random mono
> user. Ha! Joke aside, that is what I thought.
> Anyway... for what it is worth, I disagree. The advantage of having
> the same pseudo random numbers given the same seed is important.
> Yes I can write my own algorithm to accomplish that but I prefer not
> to reinvent the wheel. That was and most of the time is one of the
> biggest advantages of Mono. I do not have to rewrite code... I can
> reuse from Windows to Mac to Linux and I can focus on the core
> functionality of my applications. Not random differences between
> the OSes or random programming languages specific to that OS.
> My only request is that the decision not to provide the same
> functionality as the Microsoft's library in this case was indeed by
> design and not a random decision by some random developer.
> Okay -- enough random jokes... but the request is legit.
> Thanks for the responses.
I agree with you Duane - many applications rely on pseudo-random
number generators behaving consistently with a given seed across
different platforms (Java's implementation also works this way).
RNGCryptoServiceProvider explicitly provided for applications which
require random numbers suitable for secure, cryptograph purposes.
I've been caught out by Mono's implementation being different too
(with a test app, designed to perform a large number of requests in a
repeatable way depending on the seed). It does seem, looking back
through mailing lists & CVS history, that the original intention was
for the Mono implementation to behave the same way as Microsoft's
Knuth based implementation, but that was a few years ago. Maybe
Microsoft created an implementation that's hard to replicate reliably
so trying to replicate it was abandoned.
I have a suspicion that this issue is likely to come up again for as
long as the Mono implementation of Random remains different to
Microsoft's .NET version.
If it's not practically possible to get the Mono implementation behave
the same way, then the best that can be done is I guess to indicate
very clearly in the documentation they they behave differently. I
don't they should behave differently just for the sake of it. Maybe
dedicating a page on the Mono website to highlighting subtle
differences like this would be a good idea.
More information about the Mono-osx