summaryrefslogtreecommitdiff
path: root/src/Subsampling/include/gudhi/pick_n_random_points.h
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2020-12-10 23:05:02 +0100
committerGitHub <noreply@github.com>2020-12-10 23:05:02 +0100
commitd1b7c8fd3e66c19203967d559582af713417aeca (patch)
treeedf15bdaee94e4968e2deea7f489e4a04a3fcb5d /src/Subsampling/include/gudhi/pick_n_random_points.h
parent102b35d9807f38228e2e38acd3b39d32e8ef5e9b (diff)
parent23cd685d7a46cc5d601c9b937f6a849c8753fa32 (diff)
Merge pull request #408 from mglisse/subsample
Clean-ups in subsampling
Diffstat (limited to 'src/Subsampling/include/gudhi/pick_n_random_points.h')
-rw-r--r--src/Subsampling/include/gudhi/pick_n_random_points.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/Subsampling/include/gudhi/pick_n_random_points.h b/src/Subsampling/include/gudhi/pick_n_random_points.h
index a67b2b84..e4246c29 100644
--- a/src/Subsampling/include/gudhi/pick_n_random_points.h
+++ b/src/Subsampling/include/gudhi/pick_n_random_points.h
@@ -11,7 +11,9 @@
#ifndef PICK_N_RANDOM_POINTS_H_
#define PICK_N_RANDOM_POINTS_H_
-#include <gudhi/Clock.h>
+#ifdef GUDHI_SUBSAMPLING_PROFILING
+# include <gudhi/Clock.h>
+#endif
#include <boost/range/size.hpp>
@@ -44,6 +46,12 @@ void pick_n_random_points(Point_container const &points,
Gudhi::Clock t;
#endif
+ std::random_device rd;
+ std::mt19937 g(rd());
+
+#if __cplusplus >= 201703L
+ std::sample(std::begin(points), std::end(points), output_it, final_size, g);
+#else
std::size_t nbP = boost::size(points);
if (final_size > nbP)
final_size = nbP;
@@ -51,14 +59,12 @@ void pick_n_random_points(Point_container const &points,
std::vector<int> landmarks(nbP);
std::iota(landmarks.begin(), landmarks.end(), 0);
- std::random_device rd;
- std::mt19937 g(rd());
-
std::shuffle(landmarks.begin(), landmarks.end(), g);
landmarks.resize(final_size);
for (int l : landmarks)
*output_it++ = points[l];
+#endif
#ifdef GUDHI_SUBSAMPLING_PROFILING
t.end();