[swift-evolution] Random

David Waite david at alkaline-solutions.com
Sat Mar 4 09:55:56 CST 2017


> On Mar 4, 2017, at 3:21 AM, Haravikk via swift-evolution <swift-evolution at swift.org> wrote:
> 
>> 
>> On 4 Mar 2017, at 06:58, Charlie Monroe via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>> While I am not against the idea, I believe that this is not as easy as one would think as everyone has a different understanding of the word "random" as most of random generators aren't "true" random generators.
>> 
>> I think this would ideally require a new protocol RandomGenerator which would be passed to the collection to get the random element, i.e. it would look something like:
>> 
>> arr.randomElement(using: ARC4RandomGenerator())

Agreed. Probably the best random interface would just allow one to fetch one or more bytes of ‘randomness’, then apply however best toward making a number

> I suppose the question is whether a default PRNG on numeric types is "good enough", since most developers just need some randomness, it doesn't matter how good it actually is. Anyone with stricter requirements shouldn't be using a black-box, default generator.

In general, I’d recommend against providing a default that we know won’t meet everyone’s needs, as randomness can have security properties. There are also use cases (like games) where it is important to have multiple identical sources of random data.

A Numeric init(using: RandomSource:, range: Range<Self>) or similar may be more appropriate, but this might be better served as a future extension to be done in conjunction with the server api working group (who I believe are currently working on security/cryptography).

-DW 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170304/d05dd4ec/attachment.html>


More information about the swift-evolution mailing list