0

如何在“带有 numpy 的 Python”代码中使用与 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;

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

4

1 回答 1

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

于 2011-02-17T15:23:21.760 回答