Random boost.python中的随机数生成器

Random boost.python中的随机数生成器,random,boost-python,Random,Boost Python,如何在“Python with numpy”代码中使用与C++0x代码相同的随机数生成器 我目前正在使用 std::ranlux64_base_01 < C++和 numpy.random.RandomState(10) 在Python中 我公开了C++的随机数生成器: typedef std::ranlux64_base_01 RNG; RNG g_rng; ... class_<RNG>("RNG"); scope().attr("g_rng") = g_rng; ty

如何在“Python with numpy”代码中使用与C++0x代码相同的随机数生成器

我目前正在使用

std::ranlux64_base_01
< C++和

numpy.random.RandomState(10)
在Python中

我公开了C++的随机数生成器:

typedef std::ranlux64_base_01 RNG;
RNG g_rng;

...

class_<RNG>("RNG");
scope().attr("g_rng") = g_rng;
typedef std::ranlux64_base_01 RNG;
RNG_RNG;
...
类别("RNG");;
scope().attr(“g_rng”)=g_rng;
如何将它与接受numpy.random的Python方法结合使用?

有两种方法: 首先是用C++生成的Python随机数发生器。它可能看起来像这样:

boost::python::object randmod = boost::python::import("numpy.random")
boost::python::object randfunc = randmod.attr("RandomState")
randfunc(10)

第二个是包装和暴露C++函数,以便它可以从Python中使用。这个代码留给学生一个练习

编辑: 一旦导出C++函数,就必须使用Python对象来模拟Nypy.Realth.RealthNoice的接口,使用C++函数来实现它的随机位。这可能比你想做的更多。我没有使用过numpy,但从文档来看,RandomState对象并不是一个微不足道的对象