[swift-evolution] Random
Haravikk
swift-evolution at haravikk.me
Sat Mar 4 04:21:56 CST 2017
> On 4 Mar 2017, at 06:58, Charlie Monroe via swift-evolution <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())
>
>
>> On Mar 4, 2017, at 6:55 AM, Jonathan Hull via swift-evolution <swift-evolution at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170304/cd3fc6bf/attachment.html>
More information about the swift-evolution
mailing list