Encontré este python en mi instalación local (2.18.10) y vi el mismo comportamiento.
Parece que se ha movido a otro lugar en la rama Master en GitHub, por lo que esto cambiará en QGIS 3
Normalmente no sugiero arreglos locales como este ya que
- pueden causar problemas
- incluso si no lo hacen, perderá los cambios la próxima vez que actualice QGIS
Dicho esto, mirando el código de RandomPointsPolygonsFixed.py Ya veo por qué puede ocurrir esto
features = vector.features(layer)
for current, f in enumerate(features):
fGeom = QgsGeometry(f.geometry())
bbox = fGeom.boundingBox()
if strategy == 0:
pointCount = int(value)
else:
pointCount = int(round(value * da.measure(fGeom)))
index = QgsSpatialIndex()
points = dict()
nPoints = 0
nIterations = 0
maxIterations = pointCount * 200
total = 100.0 / pointCount
random.seed() # <-- here's your problem, it's inside the loop!
... snip ...
El problema es que random.seed() está dentro del bucle. Eso explicará por qué se repite en cada celda.
Coméntalo, y ponlo fuera del bucle así...
random.seed(MY_SEED_VALUE)
features = vector.features(layer)
for current, f in enumerate(features):
fGeom = QgsGeometry(f.geometry())
.. snip ...
Esto parece haber se ha fijado en el Maestro por lo que este comportamiento será diferente en QGIS 3.
Haciendo esto, pude ejecutar Puntos aleatorios dentro de los polígonos (fijos) dos veces y obtuve los mismos resultados...
(Tenga en cuenta que debe reiniciar QGIS después de cualquier cambio de código como éste)
Puede que merezca la pena solicitar que el valor de la semilla sea fijado por el usuario, en lugar de tener que jugar con el código instalado ;-)