[Numpy-discussion] Adopt Mersenne Twister 64bit?

Neal Becker ndbecker2@gmail....
Wed Mar 13 08:23:59 CDT 2013


Neal Becker wrote:

> Neal Becker wrote:
> 
>> I guess I talked to you about 100 years ago about sharing state between numpy
>> rng and code I have in c++ that wraps boost::random.  So is there a C-api for
>> this RandomState object I could use to call from c++?  Maybe I could do
>> something with that.
>> 
>> The c++ code could invoke via the python api, but that might be slower.  I'm
>> just rambling here, I'd have to see the API to get some ideas.
> 
> I think if I could just grab a long int from the underlying mersenne twister,
> through some c api?

Well, this at least appears to work - probably not the most efficient approach - 
calls the RandomState object via the python interface to get 4 bytes at a time:

int test1 (bp::object & rs) {
  bp::str bytes = call_method<bp::str> (rs.ptr(), "bytes", 4); // get 4 bytes
  return *reinterpret_cast<int*> (PyString_AS_STRING (bytes.ptr()));
}

BOOST_PYTHON_MODULE (numpy_rand) {
  boost::numpy::initialize();

  def ("test1", &test1);
}




More information about the NumPy-Discussion mailing list