[GRASS-dev] [GRASS GIS] #2272: Improve consistency in random generator usage
GRASS GIS
trac at osgeo.org
Thu Jul 31 05:12:58 PDT 2014
#2272: Improve consistency in random generator usage
-------------------------+--------------------------------------------------
Reporter: neteler | Owner: grass-dev@…
Type: defect | Status: new
Priority: blocker | Milestone: 7.0.0
Component: Default | Version: svn-releasebranch70
Keywords: random | Platform: Unspecified
Cpu: Unspecified |
-------------------------+--------------------------------------------------
Comment(by neteler):
For the record, from grass-dev:
On Sun, Jul 27, 2014 at 1:58 AM, Glynn Clements wrote:
> Most uses of rand, random, lrand48, etc have been replaced in r61415
> and r61416.
> Many of these modules seeded the RNG from either the clock or the PID,
> with no way to provide an explicit seed. In such cases, the use of
> G_srand48_auto() has been marked with a "FIXME" comment.
> It would be possible to modify G_srand48_auto() to allow the use of an
> environment variable, but this has problems of its own (e.g. setting
> the variable manually then forgetting about it).
> r.li.daemon/daemon.c uses a hard-coded seed of zero.
> r61416 changes readcell.c in r.proj, i.rectify, and i.ortho.rectify.
> These all used rand() to select a random cache block for ejection.
> While this wouldn't have affected the result, only the first RAND_MAX
> cache blocks would have been used. RAND_MAX is only guaranteed to be
> at least 32767, which would limit the effective cache size to 1 GiB
> (each block is 64 * 64 = 4096 "double"s = 32kiB).
> Cases which haven't been changed are:
> lib/raster3d/test/test_put_get_value_large_file.c. This appears to be
> a test case; does it matter?
> include/iostream/quicksort.h uses random() or rand() to select a pivot
> for the quicksort algorithm. That file has no dependency on lib/gis
> (or anything else, except for <stdlib.h> for random/rand), and I
> didn't want to add one unnecessarily.
> Again, this shouldn't affect the result, but there may be performance
> issues if the size of the array being sorted is significantly larger
> than RAND_MAX (in this situation, the algorithm will be O(n^2) even in
> the best case).
> Unless there's a specific reason not to, it may be better to simply
> replace all uses of that file with std::sort() from <algorithm>.
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2272#comment:3>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list