https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66302
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- I'll just note that the libc++ implementation has the same behaviour. The precise numbers are different (probably due to a slightly different implementation of uniform_real_distribution) but the pattern seen when comparing float and double output is the same.