如何在我的“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;
如何将它与Python的numpy.random方法一起使用?
答案 0 :(得分:1)
有两种方式: 首先是从c ++使用pythons随机数生成器。它可能看起来像这样:
boost::python::object randmod = boost::python::import("numpy.random")
boost::python::object randfunc = randmod.attr("RandomState")
randfunc(10)
第二个是包装和公开c ++函数,以便可以从python中使用它。这个代码留给学生练习。
编辑: 一旦导出了c ++函数,就必须使用c ++函数为它的随机位创建一个模仿numpy.random.RandomState接口的python对象。这可能是你想做的更多工作。我没有使用numpy,但从文档中看起来像RandomState对象并不重要。