> On 4 Mar 2017, at 06:58, Charlie Monroe via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@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())
> 
> 
>> On Mar 4, 2017, at 6:55 AM, Jonathan Hull via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> This is a small improvement, but I still think it is worthwhile.
>> 
>> I would like to see an 'init(randomIn: Range<Self>)’ added to Numeric (where 
>> Comparable), which would return a random number in the given range.  It is 
>> something I have added myself to a subset of number types, but it really 
>> should be part of the standard library since there are a million small 
>> number types that have to be added individually, there are a couple of 
>> tricky edge cases to get right, and my version won’t work with Numeric types 
>> added by others.
>> 
>> I would also like to see a ‘randomElement’ method added to collection.  This 
>> is much easier to get right ourselves, but it comes up often enough in 
>> generic code that I still think it is a worthwhile addition…


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.

That said, my preference is to just keep a stable of useful generators and 
allow developers to choose their preference; if they want they can easily add a 
constructor via extension, or a factory method or whatever, in which case they 
have control over the default.
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to