Hi All, I've implemented several new random integer functions in #6910 <https://github.com/numpy/numpy/pull/6910>, to wit  np.random.random_int32  np.random.random_int64  np.random.random_intp These are the minimum functions that I think we need for the numpy 1.11.0 release, most especially the random_intp function for fuzz testing the mem_overlap functions. However, there is the question of the best way to expose the functions. Currently, they are all separately exposed, but it would also be possible to expose them through a new dtype argument to the current np.random.random_integers function. Note that all all the new functions would still be there, but they could be hidden as private functions. Also, there is the option of adding a complete set comprising booleans, int8, int16, and the unsigned versions. So the two, not mutually exclusive, proposed enhancements are  expose the new functions through a dtype argument to random_integers, hide the other functions  expose the new functions through a dtype argument to random_integers, not hide the other functions  make a complete set of random integer types There is currently no easy way to specify the complete range, so a proposal for that would be to generate random numbers over the full possible range of the type if no arguments are specified. That seems like a fairly natural extension. Finally, there is also a proposal to allow broadcasting/element wise selection of the range. This is the most complicated of the proposed enhancements and I am not really in favor, but it would be good to hear from others. Thoughts? Chuck
On Thu, Dec 31, 2015 at 6:31 AM, Charles R Harris <charlesr.harris@gmail.com
wrote:
Hi All,
I've implemented several new random integer functions in #6910 <https://github.com/numpy/numpy/pull/6910>, to wit
 np.random.random_int32  np.random.random_int64  np.random.random_intp
These are the minimum functions that I think we need for the numpy 1.11.0 release, most especially the random_intp function for fuzz testing the mem_overlap functions. However, there is the question of the best way to expose the functions. Currently, they are all separately exposed, but it would also be possible to expose them through a new dtype argument to the current np.random.random_integers function. Note that all all the new functions would still be there, but they could be hidden as private functions. Also, there is the option of adding a complete set comprising booleans, int8, int16, and the unsigned versions. So the two, not mutually exclusive, proposed enhancements are
 expose the new functions through a dtype argument to random_integers, hide the other functions
+1 for a single new keyword only and hiding the rest. There's already random.randint and random.random_integers (keyword should be added to both of those). That's already one function too many. Adding even more functions would be very weird.
  expose the new functions through a dtype argument to random_integers, not hide the other functions  make a complete set of random integer types
There is currently no easy way to specify the complete range, so a proposal for that would be to generate random numbers over the full possible range of the type if no arguments are specified. That seems like a fairly natural extension.
I don't understand this point, low/high keywords explicitly say that they use the full available range?
Finally, there is also a proposal to allow broadcasting/element wise selection of the range. This is the most complicated of the proposed enhancements and I am not really in favor, but it would be good to hear from others.
I don't see much of a usecase. Broadcasting multiple keywords together is tricky to implement and use. So for the few users that may need this, a small for loop + array stack should get their job done right? Ralf
participants (2)

Charles R Harris

Ralf Gommers