Respond myself
I create a heat-map, previous I convert polygons to centroids, invert color of the heat-map and then save as geotiff

I add a integer field to polygon layer called "tiffvalue", that field will be update using a python script: ->Here the original code
Reading, modifying and writing a geotiff with GDAL in python
But here my modyfied code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from osgeo import gdal,ogr
from gdalconst import *
fc='polygons.shp'
rast='mapheat.tif'
def GetCentroidValue(fc,rast):
#open vector layer
drv=ogr.GetDriverByName('ESRI Shapefile') #assuming shapefile?
ds=drv.Open(fc,True) #open for editing
lyr=ds.GetLayer(0)
#open raster layer
src_ds=gdal.Open(rast,GA_ReadOnly)
gt=src_ds.GetGeoTransform()
rb=src_ds.GetRasterBand(1)
gdal.UseExceptions() #so it doesn't print to screen everytime point is outside grid
cols = src_ds.RasterXSize
rows = src_ds.RasterYSize
bands = src_ds.RasterCount
band = src_ds.GetRasterBand(1)
# Read full raster file into array
data = band.ReadAsArray(0, 0, cols, rows)
for feat in lyr:
geom=feat.GetGeometryRef()
mx=geom.Centroid().GetX()
my=geom.Centroid().GetY()
px = int((mx - gt[0]) / gt[1]) #x pixel
py = int((my - gt[3]) / gt[5]) #y pixel
try: #in case raster isnt full extent
val=int(data[py,px])
except:
val=-9999 #or some value to indicate a fail
feat.SetField('tiffvalue',val)
lyr.SetFeature(feat)
src_ds=None
ds=None
GetCentroidValue(fc,rast)
So I got a field called "tiffvalue" with high values (white into tiff) if the polygon is near cities and very low values (Black into tiff) is polygon is in rural zones. ;) Now, I will have only to select a feature ramdonly based on this field using it as probability the more high value the more posibilitities to be "deleted"/unselect.