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 > <swift-evolution@swift.org> 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 > <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> 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 > swift-evolution@swift.org <mailto:swift-evolution@swift.org> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution> > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution