You have summed up the situation correctly. As of this writing, you can do one of three things:
Modify NumPy to allow sharing the declarations in mtrand.pxd
Use NumPy's random generators through their default interface (perhaps you could store all the random numbers in advance outside of the nogil
block?)
Use a random number generator written in C (or possibly C++ if you are having Cython generate C++ code).
Honestly, I'd probably do the last one. If you can use C++ 11, there are several good random number generators now included in the C++ standard library that you could use.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…