44 size_t points_per_cluster,
46 std::optional<unsigned int> seed = std::nullopt)
48 std::mt19937 gen(seed ? *seed : std::random_device{}());
50 std::vector<Point<T, N>> points;
51 points.reserve(cluster_centers.size() * points_per_cluster);
53 for (
size_t i = 0; i < cluster_centers.size(); ++i)
55 std::normal_distribution<T> dist(0, spread);
56 for (
size_t j = 0; j < points_per_cluster; ++j)
59 for (
size_t k = 0; k < N; ++k)
60 p[k] = cluster_centers[i][k] + dist(gen);
std::vector< Point< T, N > > random(size_t count, const std::array< std::pair< T, T >, N > &axis_ranges, std::optional< unsigned int > seed=std::nullopt)
Generates a specified number of uniformly distributed random points in N-dimensional space.
Definition random.hpp:66
std::vector< Point< T, N > > gaussian_clusters(std::vector< Point< T, N > > cluster_centers, size_t points_per_cluster, T spread, std::optional< unsigned int > seed=std::nullopt)
Generates clustered points around provided cluster centers using a Gaussian distribution.
Definition gaussian_clusters.hpp:42