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. That first axis was entirely foreseeable before and during standardisation, and only a few small design changes would have enabled it. Niall