<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">Le 4 oct. 2017 à 19:26, Xiaodi Wu via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; a écrit :</div><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><div class="gmail_quote"><div dir="auto" class="">To sum up my thoughts so far in code, building on previous comments from others, this would be a nice set of random APIs, IMO:</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">```</div><div dir="auto" class="">extension Int {</div><div dir="auto" class="">&nbsp; static func random(in range: Countable{Closed}Range&lt;Int&gt;) -&gt; Int</div><div dir="auto" class="">}</div><div dir="auto" class="">// And similar for other concrete built-in integer types.</div><div dir="auto" class="">//</div><div dir="auto" class="">// Since fixed-width integers could exceed the maximum size supported by getrandom()</div><div dir="auto" class="">// and other such functions, we do not provide a default implementation.</div><div dir="auto" class="">//</div><div dir="auto" class="">// The return value may not be cryptographically secure if there is insufficient entropy.</div></div></div></div></div></blockquote><div><br class=""></div><div>I don't think that we should limit implementations based on that. If it's not an issue for `random(byteCount:)`, then it shouldn't be an issue for FixedWidthInteger.</div><div><br class=""></div><div>(Also, I know that getrandom has a threshold where it becomes interruptible, but I'm not aware of an actual maximum size.)</div><br class=""><blockquote type="cite" class=""><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><div class="gmail_quote"><div dir="auto" class=""><br class=""></div><div dir="auto" class="">extension Float {</div><div dir="auto" class="">&nbsp; static func random(in range: {Closed}Range&lt;Float&gt;) -&gt; Float</div><div dir="auto" class="">}</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">extension Double {</div><div dir="auto" class="">&nbsp; static func random(in range: {Closed}Range&lt;Double&gt;) -&gt; Double</div><div dir="auto" class="">}</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">extension Float80 {</div><div dir="auto" class="">&nbsp; // Ditto.</div><div dir="auto" class="">}</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">extension Data {</div><div dir="auto" class="">&nbsp; static func random(byteCount: Int) -&gt; Data</div><div dir="auto" class="">}</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">extension UnsafeMutableRawPointer {</div><div dir="auto" class="">&nbsp; func copyRandomBytes(count: Int) throws</div><div dir="auto" class="">}</div><div dir="auto" class="">// This function is to be the most primitive of the random APIs, and will throw if there is insufficient entropy.</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">extension UnsafeMutableRawBufferPointer {</div><div dir="auto" class="">&nbsp; func copyRandomBytes() throws</div><div dir="auto" class="">}</div><div dir="auto" class="">// Just as UMRBP.copyBytes(from:) parallels UMRP.copyBytes(from:count:), we offer this convenience here.</div></div></div></div></div></blockquote><br class=""></div><div>What happened to the collection-based random functions? I'm not incredibly attached to them, but it doesn't seem to me that anyone has explicitly willed them away and I just want to be sure that it's not an oversight.</div><div><br class=""></div><div>Félix</div><br class=""></body></html>