Niall Douglas wrote:
On 29/11/2023 22:21, Peter Dimov via Boost wrote:
Niall Douglas wrote:
There were still some big design mistakes in 11 - I still find `<random>` very unfortunate and entirely avoidable at the time,
<random> is mostly fine. The generators and the concepts reflect the state of the art as it was then, and aren't entirely broken even today.
I really have to disagree :)
There is this axis randomness:
1. Predictable randomness from a specified starting state.
2. Unpredictable randomness with same semantics on all architectures.
There is also the quality vs fast axis.
On the quality vs fast axis, I could just about agree with you about <random>.
On that other axis though, <random> is a complete design failure. One needs the ability to copy states, serialise and deserialise states, and to get identical output on all architectures and platforms for a given starting state.
One also must not have an engine perform 20x worse on one platform than another if one is to write usefully portable code.
I don't understand your objections, sorry. Are you saying that the generators in <random> don't offer the ability to copy, serialize, deserialize and give identical output? Because they do. Which engine performs 20x worse?