/// \defgroup PkgGeneratorsRef Reference Manual
/// \defgroup PkgGeneratorsConcepts Concepts
/// \ingroup PkgGeneratorsRef
/*!
\addtogroup PkgGeneratorsRef
\cgalPkgDescriptionBegin{Geometric Object Generators,PkgGenerators}
\cgalPkgPicture{dice.png}
\cgalPkgSummaryBegin
\cgalPkgAuthors{Pedro M. M. de Castro, Olivier Devillers, Susan Hert, Michael Hoffmann, Lutz Kettner, Sven Schönherr, Alexandru Tifrea, and Maxime Gimeno}
\cgalPkgDesc{This package provides a variety of generators for geometric objects. They are useful as synthetic test data sets, e.g. for testing algorithms on degenerate object sets and for performance analysis. }
\cgalPkgManuals{Chapter_Geometric_Object_Generators,PkgGeneratorsRef}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{1.0}
\cgalPkgBib{cgal:dhhk-gog}
\cgalPkgLicense{\ref licensesLGPL  "LGPL"}
\cgalPkgDemo{Generators,generator.zip}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

This chapter describes the functions and classes provided in \cgal
that are useful for generating synthetic test data sets, <I>e.g.,</I>
for testing algorithms on degenerate object sets and for performance
analysis.  These include a class for generating random numbers and
function for selecting random items from a set of objects, generators
for two-dimensional and three-dimensional points sets, a generator for
random convex sets and one for simple polygons.  The \stl algorithm
`std::random_shuffle` is useful with these functions and classes to to
achieve random permutations for otherwise regular generators (
<I>e.g.</I>, points on a grid or segment).

\cgalClassifedRefPages

\cgalCRPSection{Concepts}

- `PointGenerator`
- `RandomConvexSetTraits_2`
- `RandomPolygonTraits_2`
- `RandomConvexHullTraits_2`

\cgalCRPSection{Functions}

- `CGAL::perturb_points_2()`
- `CGAL::points_on_segment_2()`
- `CGAL::points_on_square_grid_2()`
- `CGAL::points_on_cube_grid_3()`
- `CGAL::points_on_cube_grid_d()`
- `CGAL::random_collinear_points_2()`
- `CGAL::random_convex_set_2()`
- `CGAL::random_polygon_2()`
- `CGAL::random_selection()`
- `CGAL::random_convex_hull_in_disc_2()`
- `CGAL::get_default_random()`

\cgalCRPSection{Classes}

- `CGAL::Random`
- `CGAL::Points_on_segment_2<Point_2>`
- `CGAL::Random_points_in_ball_d<Point_d>`
- `CGAL::Random_points_in_cube_3<Point_3, Creator>`
- `CGAL::Random_points_in_cube_d<Point_d>`
- `CGAL::Random_points_in_disc_2<Point_2, Creator>`
- `CGAL::Random_points_in_triangle_2<Point_2, Creator>`
- `CGAL::Random_points_in_sphere_3<Point_3, Creator>`
- `CGAL::Random_points_in_triangle_3<Point_3, Creator>`
- `CGAL::Random_points_in_tetrahedron_3<Point_3, Creator>`
- `CGAL::Random_points_in_tetrahedral_mesh_3<C3t3>`
- `CGAL::Random_points_in_square_2<Point_2, Creator>`
- `CGAL::Random_points_on_circle_2<Point_2, Creator>`
- `CGAL::Random_points_in_triangle_mesh_2<Point_2, Triangulation>`
- `CGAL::Random_points_in_triangle_mesh_3<Point_3, Mesh>`
- `CGAL::Random_points_in_tetrahedral_mesh_boundary_3<C3t3>`
- `CGAL::Random_points_on_segment_2<Point_2, Creator>`
- `CGAL::Random_points_on_sphere_3<Point_3, Creator>`
- `CGAL::Random_points_on_sphere_d<Point_d>`
- `CGAL::Random_points_on_square_2<Point_2, Creator>`

\cgalCRPSection{Traits Class}

- `CGAL::Random_convex_set_traits_2<Kernel>`

*/
