<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
<div name="messageBodySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;">
I completely agree with you on all points, but I was wondering about the numeric types getting random initializers. I think it’s a great idea, but is this something that should be discussed in a separate proposal? My current goals for the proposal is creating
 the actual random API, then discussing ideas for additions to RandomAccessCollection&#43;MutableCollection to include .random and .shuffle like Ben mentioned, along with the addition of the numeric initializers.</div>
<div name="messageSignatureSection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;">
<br>
- Alejandro</div>
<div name="messageReplySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;">
<br>
On Sep 10, 2017, 12:31 AM -0500, Chris Lattner &lt;clattner@nondot.org&gt;, wrote:<br>
<blockquote type="cite" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #1abc9c;">
<br class="">
<div>
<blockquote type="cite" class="" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #e67e22;">
<div class="">On Sep 8, 2017, at 9:52 AM, Alejandro Alonso via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">
<div name="messageBodySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;" class="">
Hello swift evolution, I would like to propose a unified approach to `random()` in Swift. I have a simple implementation here&nbsp;<a href="https://gist.github.com/Azoy/5d294148c8b97d20b96ee64f434bb4f5" class="">https://gist.github.com/Azoy/5d294148c8b97d20b96ee64f434bb4f5</a>.
 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.
<div class=""><br class="">
</div>
<div class="">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.</div>
<div class=""><br class="">
</div>
<div class="">I’d like to hear about your ideas on this proposal, or any implementation changes if need be.</div>
</div>
</div>
</div>
</blockquote>
<br class="">
</div>
<div>My 2c:</div>
<div><br class="">
</div>
<div>- I’d love to see some random number initializers get added as initializers on the numeric types. &nbsp;This is a long standing hole and it would be hugely valuable to fill it.</div>
- I’d love to see several of the most common random kinds supported, and I agree it would be nice (but not required IMO) for the default to be cryptographically secure.
<div class="">- We should avoid the temptation to nuke this mosquito with a heavy handed solution designed to solve all of the world’s problems: For example, the C&#43;&#43; random number stuff is crazily over-general. &nbsp;The stdlib should aim to solve (e.g.) the top
 3 most common cases, and let a more specialized external library solve the fully general problem (e.g. seed management, every distribution imaginable, etc).</div>
<div class=""><br class="">
</div>
<div class="">In terms of approach, I’d suggest looking at other libraries that are conceptually similar, e.g. the “simple random data” APIs for numpy:</div>
<div class=""><a href="https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.random.html" class="">https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.random.html</a></div>
<div class=""><br class="">
</div>
<div class="">Things like “return a random number from 0 to 1.0, 0 to N, 0 to INTMAX, sample from a normal/gaussian distribution, and maybe one more should be enough.</div>
<div class=""><br class="">
</div>
<div class="">-Chris</div>
<div class=""><br class="">
<div class=""><br class="">
</div>
</div>
</blockquote>
</div>
</body>
</html>