<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="">Which begs the question: why would you want to do something like this? Creating a “random” Double from its full range of values is an odd thing to do, and the fact that it is non-uniform and has irregularities like infinity and signed zeros makes it likely that any such usage is probably done in error (the one reason I can think of is if you’re trying to test your code with random Doubles, but I’d argue for keeping NaN in that case). Generally users are looking for uniform distributions or ones that follow some set pattern (e.g. normal, Bernoulli), so this doesn’t seem useful at all.<div class=""><br class=""><div class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Saagar Jha</div>

</div>
<div><br class=""><blockquote type="cite" class=""><div class="">On Jan 10, 2018, at 14:39, Jens Persson &lt;<a href="mailto:jens@bitcycle.com" class="">jens@bitcycle.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">On Wed, Jan 10, 2018 at 11:27 PM, Saagar Jha <span dir="ltr" class="">&lt;<a href="mailto:saagar@saagarjha.com" target="_blank" class="">saagar@saagarjha.com</a>&gt;</span> wrote:<br class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space" class="">Not a floating point expert, but are you sure this works? I have a feeling this would lead to a distribution that’s not uniform.<div class=""><span class="gmail-HOEnZb"><font color="#888888" class=""><br class=""></font></span></div></div></blockquote><div class=""><br class=""></div><div class="">Yes, it would not be uniform, which is exactly what I meant by the last part of: "<span style="color:rgb(80,0,80);font-size:12.800000190734863px" class="">Assuming you are ok with signed zero and infinities and "strange" bias as result of IEEE 754"</span></div><div class=""><br class=""></div><div class="">Also, I think it's impossible to get a uniform distribution of all non-Nan Double values (since they include +- infinity).</div><div class=""><br class=""></div><div class=""><font color="#500050" class=""><span style="font-size:12.800000190734863px" class="">/Jens</span></font></div><div class=""><font color="#500050" class=""><span style="font-size:12.800000190734863px" class=""><br class=""></span></font></div><div class="">&nbsp;</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space" class=""><div class=""><span class="gmail-HOEnZb"><font color="#888888" class=""><div class="">
<div style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; word-wrap: break-word;" class="">Saagar Jha</div>

</div>
</font></span><div class=""><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail-h5"><div class="">On Jan 10, 2018, at 14:07, Jens Persson via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="gmail-m_3506493873590993612Apple-interchange-newline"></div></div><div class=""><div class=""><div class="gmail-h5"><div dir="ltr" class="">On Tue, Jan 9, 2018 at 10:07 PM, Jonathan Hull via swift-evolution <span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span> wrote:<br class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><br class=""></div><div class=""><div class="">One additional question.&nbsp; How do you ergonomically get a Double which doesn’t have a range, but also isn’t NaN?</div><div class=""><div class="gmail-m_3506493873590993612gmail-h5"><div class=""><br class=""></div></div></div></div></div></blockquote><div class=""><br class=""></div><div class="">Assuming you are ok with signed zero and infinities and "strange" bias as result of IEEE 754:</div><div class=""><div class=""><br class=""></div><div class="">func randomNonNanDouble&lt;R: RandomNumberGenerator&gt;(using generator: R) -&gt; Double {</div><div class="">&nbsp; &nbsp; while true {</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; let rndUInt64 = generator.next()</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; let rndDouble = Double(bitPattern: rndUInt64)</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; if rndDouble != Double.nan { return rndDouble }</div><div class="">&nbsp; &nbsp; }</div><div class="">}<br class=""></div></div><div class=""><br class=""></div><div class="">/Jens</div><div class=""><br class=""></div></div></div></div></div></div><span class="gmail-">
______________________________<wbr class="">_________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank" class="">https://lists.swift.org/<wbr class="">mailman/listinfo/swift-<wbr class="">evolution</a><br class=""></span></div></blockquote></div><br class=""></div></div></blockquote></div><br class=""></div></div>
</div></blockquote></div><br class=""></div></div></body></html>