@@ -40,7 +40,11 @@ def __init__(self, generator: Generator):
4040 get_int = igraph_rng_type_t .TYPES ["get_int" ](self ._rng_get_int ),
4141 get_real = igraph_rng_type_t .TYPES ["get_real" ](self ._rng_get_real ),
4242 get_norm = igraph_rng_type_t .TYPES ["get_norm" ](self ._rng_get_norm ),
43- # TODO(ntamas): get_geom, get_binom, get_exp, get_gamma, get_pois
43+ get_geom = igraph_rng_type_t .TYPES ["get_geom" ](self ._rng_get_geom ),
44+ get_binom = igraph_rng_type_t .TYPES ["get_binom" ](self ._rng_get_binom ),
45+ get_exp = igraph_rng_type_t .TYPES ["get_exp" ](self ._rng_get_exp ),
46+ get_gamma = igraph_rng_type_t .TYPES ["get_gamma" ](self ._rng_get_gamma ),
47+ get_pois = igraph_rng_type_t .TYPES ["get_pois" ](self ._rng_get_pois ),
4448 )
4549 self ._rng = _RNG .create (pointer (self ._rng_type ))
4650 self ._rng .unwrap ().is_seeded = True
@@ -77,6 +81,23 @@ def _rng_get_real(self, _state):
7781 def _rng_get_norm (self , _state ):
7882 return self ._generator .normal ()
7983
84+ def _rng_get_geom (self , _state , p ):
85+ # NumPy uses 1-based return values, igraph assumes 0-based
86+ return self ._generator .geometric (p ) - 1
87+
88+ def _rng_get_binom (self , _state , n , p ):
89+ return self ._generator .binomial (n , p )
90+
91+ def _rng_get_exp (self , _state , rate ):
92+ # NumPy uses the scale parameter, igraph supplies the rate parameter
93+ return self ._generator .exponential (1 / rate )
94+
95+ def _rng_get_gamma (self , _state , shape , scale ):
96+ return self ._generator .gamma (shape , scale )
97+
98+ def _rng_get_pois (self , _state , rate ):
99+ return self ._generator .poisson (rate )
100+
80101 def attach (self ) -> Callable [[], None ]:
81102 """Attaches this RNG instance as igraph's default RNG.
82103
0 commit comments