<html><head></head><body><div style="color:#000; background-color:#fff; font-family:verdana, helvetica, sans-serif;font-size:16px"><div id="yui_3_16_0_ym19_1_1547753049907_182461"><span id="yui_3_16_0_ym19_1_1547753049907_182469">Have one function with a seed...</span></div><div id="yui_3_16_0_ym19_1_1547753049907_182486"><span id="yui_3_16_0_ym19_1_1547753049907_182469"><br></span></div><div id="yui_3_16_0_ym19_1_1547753049907_182517"><span id="yui_3_16_0_ym19_1_1547753049907_182469">The same seed generates the same set, using random() as the seed generates a different random selection each time, but recording the seed value provides reproducibility, which can be important.</span></div><div class="qtdSeparateBR" id="yui_3_16_0_ym19_1_1547753049907_182462"><br><div id="yui_3_16_0_ym19_1_1547753049907_182583">Brent Wood<br></div><div id="yui_3_16_0_ym19_1_1547753049907_182607"><br></div><div id="yui_3_16_0_ym19_1_1547753049907_182608"><br></div></div><div class="yahoo_quoted" id="yui_3_16_0_ym19_1_1547753049907_182615" style="display: block;">  <div style="font-family: verdana, helvetica, sans-serif; font-size: 16px;" id="yui_3_16_0_ym19_1_1547753049907_182614"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_ym19_1_1547753049907_182613"> <div dir="ltr" id="yui_3_16_0_ym19_1_1547753049907_182612"> <font id="yui_3_16_0_ym19_1_1547753049907_182611" size="2" face="Arial"> <hr size="1"> <b id="yui_3_16_0_ym19_1_1547753049907_182610"><span style="font-weight:bold;" id="yui_3_16_0_ym19_1_1547753049907_182609">From:</span></b> Martin Davis <mtnclimb@gmail.com><br> <b><span style="font-weight: bold;">To:</span></b> PostGIS Development Discussion <postgis-devel@lists.osgeo.org> <br> <b><span style="font-weight: bold;">Sent:</span></b> Saturday, January 19, 2019 6:50 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [postgis-devel] ST_GeneratePoints randomness<br> </font> </div> <div class="y_msg_container" id="yui_3_16_0_ym19_1_1547753049907_182616"><br><div id="yiv9035014196"><div id="yui_3_16_0_ym19_1_1547753049907_182621"><div dir="ltr" id="yui_3_16_0_ym19_1_1547753049907_182620"><div dir="ltr" id="yui_3_16_0_ym19_1_1547753049907_182619"><div dir="ltr" id="yui_3_16_0_ym19_1_1547753049907_182618"><div id="yui_3_16_0_ym19_1_1547753049907_182617">Perhaps there is a use case for both functions?  One that generates a reproducible set of pseudo-random points, and one that generates a different set each time called.  </div><div id="yui_3_16_0_ym19_1_1547753049907_182622"><br clear="none"></div><div>If so, it sounds like the "really random" function would have to be a separate VOLATILE declaration.</div><div id="yui_3_16_0_ym19_1_1547753049907_182623"><br clear="none"></div><div id="yui_3_16_0_ym19_1_1547753049907_182624">On a related note, generating random points using a simple random function produces quite "clumpy" point sets. There's lots of approaches to creating more evenly spaced quasi-random pointsets, such as Halton points [1] or using a distance tolerance [2].  It might be nice to provide one or more of these as functions as well.</div><div><br clear="none"></div><div>[1] <a rel="nofollow" shape="rect" target="_blank" href="https://lin-ear-th-inking.blogspot.com/2012/09/halton-sequences-at-last.html">https://lin-ear-th-inking.blogspot.com/2012/09/halton-sequences-at-last.html</a></div><div>[2] <a rel="nofollow" shape="rect" target="_blank" href="https://lin-ear-th-inking.blogspot.com/2015/07/even-distribution-random-point-and.html">https://lin-ear-th-inking.blogspot.com/2015/07/even-distribution-random-point-and.html</a></div><br clear="none"><div class="yiv9035014196gmail_quote"><div class="yiv9035014196yqt1653963716" id="yiv9035014196yqtfd14707"><div dir="ltr">On Fri, Jan 18, 2019 at 5:51 AM Darafei "Komяpa" Praliaskouski <<a rel="nofollow" shape="rect" ymailto="mailto:me@komzpa.net" target="_blank" href="mailto:me@komzpa.net">me@komzpa.net</a>> wrote:<br clear="none"></div><blockquote class="yiv9035014196gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;"><div dir="ltr">Hi Felix,<br clear="none"><div><br clear="none"></div><div>would you prefer the function to always return the same set of random points, or get the fact that it can return different set of points on invocations in different transactions documented?<br clear="none"><br clear="none">I'm not sure treating it same as random() is a great idea, I use it more like "give me a point cloud that fills this polygon" converting it for usage in point-accepting functions, like calculating the median of the polygon. I'd prefer it cached like it is now for such cases. <br clear="none"><br clear="none">What are you using your random geodata for? </div></div><br clear="none"><div class="yiv9035014196gmail_quote"><div dir="ltr">On Wed, Jan 16, 2019 at 1:11 AM Felix Kunde <<a rel="nofollow" shape="rect" ymailto="mailto:felix-kunde@gmx.de" target="_blank" href="mailto:felix-kunde@gmx.de">felix-kunde@gmx.de</a>> wrote:<br clear="none"></div><blockquote class="yiv9035014196gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;"><div><div style="font-family:Verdana;font-size:12px;"><div>Hi list,</div>

<div> </div>

<div>I thought that this topic better belongs on this list.</div>

<div>I'm trying to create some random spatial data using the ST_GeneratePoints functions. I wanted to reuse it also for lines and polygons but stumbled over the issue that multiple calls of the function in one transaction produce the same result. I tested different query constructs - even looping over a PL/pgSQL function - but no luck. So whereas:</div>

<div> </div>

<div>SELECT</div>

<div>  random() AS random_a,</div>

<div>  random() AS random_b;</div>

<div> </div>

<div>creates different results, this:</div>

<div> </div>

<div>SELECT<br clear="none">
  ST_AsText(ST_GeneratePoints('POLYGON((0 0,1 0,1 1,0 1,0 0))'::geometry, 2)) AS random_a,<br clear="none">
  ST_AsText(ST_GeneratePoints('POLYGON((0 0,1 0,1 1,0 1,0 0))'::geometry, 2)) AS random_b;</div>

<div> </div>

<div>will produce the same. There are workaround to generate random geodata, of course.</div>

<div>Just wanted to point it out here and see, if you are aware of this. I couldn't found any ticket regarding this behaviour.</div>

<div> </div>

<div>Best, Felix</div></div></div><br clear="none"></blockquote></div><br clear="none"></blockquote></div></div></div></div></div></div></div><div class="yqt1653963716" id="yqtfd06624">_______________________________________________<br clear="none">postgis-devel mailing list<br clear="none"><a shape="rect" ymailto="mailto:postgis-devel@lists.osgeo.org" href="mailto:postgis-devel@lists.osgeo.org">postgis-devel@lists.osgeo.org</a><br clear="none"><a shape="rect" href="https://lists.osgeo.org/mailman/listinfo/postgis-devel" target="_blank">https://lists.osgeo.org/mailman/listinfo/postgis-devel</a></div><br><br></div> </div> </div>  </div></div></body></html>