
John Maddock wrote:
seed will work as advertised. Regardless of the outcome of this discussion, I will make sure that the exact behavior is documented.
I think that's the key here: if the documentation clearly states that the seed is treated modulo N or whatever then that would be OK for me.
Whatever the status quo is unacceptable given that seeding with unspecified values (from time() or some other non-deterministic device) is so commonplace. Throwing an exception for out-of-range values might work, but as pointed out the exception would occur so infrequently in practice that your just creating another source of bugs. Robert, what if the docs clearly stated that "Safe values for the seed are 0-N, values outside this range get wrapped within it via modulo N arithmetic, therefore different seeds can result in the same sequence of random values if one of those seeds is outside of the safe range." Or something like that ;-)
Fine by me. In fact, all of you have considered it more than I have so I'm very happy to defer to your judgment on this case. I just reacted to the general idea of fixing stuff up under the covers. It turns out that I just happened to need a quick and idiot-proof number generator so I used boost.random. I think the motivation for my original complaint was: "uh - oh, do have actually have to know something about random number generation to use this library?" If so, I've got a problem. I want it to "just work". Being idiot-proof was a pre-condition in this circumstance. I realize that satisifying such a pre-condition is the motivation for the proposed solution and I'm OK with that. But when this is done "silently", it can create problems which are devilishly hard to find. Also, I found the documentation not good enough in general. I did make it work but it wasn't as easy to use as I would have hoped. Of course I could make the same criticism for many or most libraries. Of course at the root of the problem is the desire to use facilities that I have neither the knowledge nor time to implement myself. But that's what I use libraries for - so they almost have to be idiot proof to be useful to me. Just one man's opinion. Robert Ramey