Quick thoughts: 1. A stdlib-level random number facility should default to a host-provided CSPRNG as the generator. Anything less is really not justifiable. The throughput of modern HW-backed CSPRNGs exceeds that of all but the fastest PRNGs, anyway.
2. MT is not a CSPRNG. – Steve > On Sep 8, 2017, at 1:31 PM, Kevin Nattinger via swift-evolution > <[email protected]> wrote: > > IMO, we should have a `Random` or `RandomGenerator` interface and the stdlib > can provide a `SystemRandom` that wraps arc4*/random(), and maybe a > cryptographically secure one too (MT19937?). > > protocol RandomGenerator { > func uniform() -> Int > func uniform() -> Double > func uniformBytes(count: Int) -> Data > } > > Then we could add things like, e.g. a protocol extension to generate normally > distributed numbers > (https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform > <https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform>). > > extension RandomGenerator { > func normal<T: FloatingPoint>() -> (T, T) { > // ... > } > } > >> On Sep 8, 2017, at 10:08 AM, Shawn Erickson via swift-evolution >> <[email protected] <mailto:[email protected]>> wrote: >> >> It would be nice to leverage range support instead of a start and end value >> IMHO. >> On Fri, Sep 8, 2017 at 9:52 AM Alejandro Alonso via swift-evolution >> <[email protected] <mailto:[email protected]>> wrote: >> Hello swift evolution, I would like to propose a unified approach to >> `random()` in Swift. I have a simple implementation here >> https://gist.github.com/Azoy/5d294148c8b97d20b96ee64f434bb4f5 >> <https://gist.github.com/Azoy/5d294148c8b97d20b96ee64f434bb4f5>. This >> implementation is a simple wrapper over existing random functions so >> existing code bases will not be affected. Also, this approach introduces a >> new random feature for Linux users that give them access to upper bounds, as >> well as a lower bound for both Glibc and Darwin users. This change would be >> implemented within Foundation. >> >> I believe this simple change could have a very positive impact on new >> developers learning Swift and experienced developers being able to write >> single random declarations. >> >> I’d like to hear about your ideas on this proposal, or any implementation >> changes if need be. >> >> - Alejando >> >> _______________________________________________ >> swift-evolution mailing list >> [email protected] <mailto:[email protected]> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution> >> _______________________________________________ >> swift-evolution mailing list >> [email protected] <mailto:[email protected]> >> https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
