Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How is numpy.random.Generator different from RandomState?

Generator sounds like a replacement for RandomState, and the way of the future for generating random numbers in NumPy.

What features or behavior (currently or planned) does Generator have that RandomState doesn't?

Both can be parameterized with BitGenerator objects. They have some different methods, but the vast majority appear to be the same.

Relevant links:

  • docs on the "legacy" RandomState
  • Generator docs
  • BitGenerator docs
  • Developer's github
like image 460
grisaitis Avatar asked Nov 15 '22 13:11

grisaitis


1 Answers

As of numpy version 1.23, they list 9 differences at What’s New or Different. To better understand the logic behind the change, I'd recommend reading NEP 19

TLDR:

  1. API changes "cleaned up"
  2. Performance changes, mostly due to switching from Box-Muller to Ziggurat algorithms it seems. Some go to 4x faster with the new approach. See Performance
  3. Numba and Cython compatible BitGenerators.
  4. New dtype, out and axis arguments to fill parts of existing arrays and to control output datatypes.
like image 177
mmdanziger Avatar answered Mar 24 '23 18:03

mmdanziger