boost.python中的随机数生成器

时间:2011-02-16 20:55:51

标签: 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;

如何将它与Python的numpy.random方法一起使用?

1 个答案:

答案 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对象并不重要。