49     py::class_<Random> clsRandom(mod, 
"Random");
 
   52     py::enum_<Random::Algorithm>(clsRandom, 
"Algorithm")
 
   53             .value(
"MT19937", Random::Algorithm::MT19937)
 
   54             .value(
"RANLXS0", Random::Algorithm::RANLXS0)
 
   55             .value(
"RANLXS1", Random::Algorithm::RANLXS1)
 
   56             .value(
"RANLXS2", Random::Algorithm::RANLXS2)
 
   57             .value(
"RANLXD1", Random::Algorithm::RANLXD1)
 
   58             .value(
"RANLXD2", Random::Algorithm::RANLXD2)
 
   59             .value(
"RANLUX", Random::Algorithm::RANLUX)
 
   60             .value(
"RANLUX389", Random::Algorithm::RANLUX389)
 
   61             .value(
"CMRG", Random::Algorithm::CMRG)
 
   62             .value(
"MRG", Random::Algorithm::MRG)
 
   63             .value(
"TAUS", Random::Algorithm::TAUS)
 
   64             .value(
"TAUS2", Random::Algorithm::TAUS2)
 
   65             .value(
"GFSR4", Random::Algorithm::GFSR4)
 
   66             .value(
"NUM_ALGORITHMS", Random::Algorithm::NUM_ALGORITHMS)
 
   70     clsRandom.def(py::init<Random::Algorithm, unsigned long>(), 
"algorithm"_a = Random::Algorithm::MT19937,
 
   72     clsRandom.def(py::init<std::string const &, unsigned long>(), 
"algorithm"_a, 
"seed"_a = 1);
 
   75     clsRandom.def(
"deepCopy", &Random::deepCopy);
 
   76     clsRandom.def(
"getAlgorithm", &Random::getAlgorithm);
 
   77     clsRandom.def(
"getAlgorithmName", &Random::getAlgorithmName);
 
   78     clsRandom.def_static(
"getAlgorithmNames", &Random::getAlgorithmNames);
 
   79     clsRandom.def(
"getSeed", &Random::getSeed);
 
   80     clsRandom.def(
"uniform", &Random::uniform);
 
   81     clsRandom.def(
"uniformPos", &Random::uniformPos);
 
   82     clsRandom.def(
"uniformInt", &Random::uniformInt);
 
   83     clsRandom.def(
"flat", &Random::flat);
 
   84     clsRandom.def(
"gaussian", &Random::gaussian);
 
   85     clsRandom.def(
"chisq", &Random::chisq);
 
   86     clsRandom.def(
"poisson", &Random::poisson);
 
   91     clsRandom.def(
"getState", [](
Random &
self) -> py::object {
 
   93         return py::reinterpret_steal<py::object>(PyBytes_FromStringAndSize(state.
data(), state.
size()));
 
   95     clsRandom.def(
"setState", [](
Random &
self, 
py::bytes const &state) { 
self.setState(state); });
 
   98     declareRandomImage<lsst::afw::image::Image<double>>(mod);
 
   99     declareRandomImage<lsst::afw::image::Image<float>>(mod);