randomBeta¶
Generates pseudorandom numbers from a beta distribution.
Synopsis¶
randomBeta (nRandom, pin, qin)
Required Arguments¶
- int
nRandom(Input) - Number of random numbers to generate.
- float
pin(Input) - First beta distribution parameter. Argument
pinmust be positive. - float
qin(Input) - Second beta distribution parameter. Argument
qinmust be positive.
Return Value¶
If no optional arguments are used, randomBeta returns an array of length
nRandom containing the random standard beta deviates.
Description¶
Function randomBeta generates pseudorandom numbers from a beta
distribution with parameters pin and qin, both of which must be
positive. With p = pin and q = qin, the probability density
function is
where Γ (⋅) is the gamma function.
The algorithm used depends on the values of p and q. Except for the
trivial cases of \(p=1\) or \(q=1\), in which the inverse CDF method
is used, all of the methods use acceptance/rejection. If p and q are both
less than 1, the method of Jöhnk (1964) is used. If either p or q is less
than 1 and the other is greater than 1, the method of Atkinson (1979) is
used. If both p and q are greater than 1, algorithm BB (Cheng 1978),
which requires very little setup time, is used if nRandom is less than 4;
and algorithm B4PE of Schmeiser and Babu (1980) is used if nRandom is
greater than or equal to 4. Note that for p and q both greater than 1,
calling randomBeta in a loop getting less than four variates on each call
will not yield the same set of deviates as calling randomBeta once and
getting all the deviates at once because two different algorithms are used.
The values returned in r are less than 1.0 and greater than ɛ, where ɛ is
the smallest positive number such that \(1.0-\varepsilon\) is less than
1.0.
Function randomSeedSet can be used to initialize the seed of the random
number generator; function randomOption can be used to
select the form of the generator.
Example¶
In this example, randomBeta generates five pseudorandom beta (3, 2)
variates.
from numpy import *
from pyimsl.stat.randomBeta import randomBeta
from pyimsl.stat.randomSeedSet import randomSeedSet
from pyimsl.stat.writeMatrix import writeMatrix
n_random = 5
pin = 3.0
qin = 2.0
randomSeedSet(123457)
r = randomBeta(n_random, pin, qin)
writeMatrix("Beta(3,2) random deviates", r)
Output¶
Beta(3,2) random deviates
1 2 3 4 5
0.2814 0.9483 0.3984 0.3103 0.8296