Sampler Hammersley [Ham60]
Description
The Hammersley sampler. This sampler is only 2D, with the first coordinate obtained by dividing the index of the sample by the total number of samples, and the second coordinate obtained by reversing the binary representation of the index.
For a more precise description of this sampler and its performances in terms of aliasing and discrepancy, please refer to the following web bundle https://liris.cnrs.fr/ldbn/HTML_bundle/index.html.
Files
src/samplers/Hammersley.cpp
include/utk/samplers/SamplerHammersley.hpp
Usage
Hammersley sampler
Usage: ./Hammersley [OPTIONS]
Options:
-h,--help Print this help message and exit
-n UINT REQUIRED Number of points
-d UINT UNUSED ! Here for compatibility with others.
-s,--seed UINT UNUSED ! Here for compatibility with others.
-m UINT [1] Number of pointsets
-o,--out TEXT [out.dat] Output file (format). {i} splits outputs in multiple files and token is replaced by index.
--silent Silence UTK logs
#include <utk/utils/PointsetIO.hpp>
#include <utk/utils/Pointset.hpp>
#include <utk/samplers/SamplerHammersley.hpp>
int main()
{
utk::Pointset<double> pts;
utk::SamplerHammersley ham;
// Check for no errors
if (ham.generateSamples(pts, 1024 /* Number of points */))
{
write_text_pointset("ham.dat", pts);
}
}
import pyutk
halton = pyutk.Hammersley()
samples = halton.sample(1024) # This is a numpy array !
Results
License
See Licence.md file.