(gamma-random-float<1) ( alpha beta -- n )


Vocabulary
random.private

Inputs
alphaan object
betaan object


Outputs
nan object


Definition


:: (gamma-random-float<1) ( alpha beta -- n )
random-generator get :> rnd alpha e + e /
:> b 0 :> x! 0 :> p! [
p 1.0 >
[ rnd (random-unit) x alpha 1 - ^ > ]
[ rnd (random-unit) x neg e^ > ] if
] [
rnd (random-unit) b * p! p 1.0 <=
[ p 1.0 alpha / ^ ] [ b p - alpha / log neg ] if x!
] do while x beta * ;