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

Reply via email to