search.cpan.org is shutting down
For details read Perl NOC. After June 25th this page will redirect to MetaCPAN.org
Steffen Müller > Math-Random-AcceptReject > Math::Random::AcceptReject
Module Version: 0.02

NAME

Math::Random::AcceptReject - Acceptance-Rejection PDF transformations

SYNOPSIS

```  use Math::Random::AcceptReject;
my \$pdf = Math::Random::AcceptReject->new(
xmin   => 0, # defaults to 0
xmax   => 2, # defaults to 1
ymax   => 2, # no default!
pdf    => 'x',    # a triangle from x=0 to x=2 with slope 1
random => 'rand', # use Perl's builtin (default)
);

foreach (1..100) {
my \$rnd = \$pdf->rand();
# ...
}

# Use Math::Random::MT instead of bultin rand()
# Same target PDF but as Perl code instead of a Math::Symbolic
# function!
use Math::Random::MT;
my \$mt = Math::Random::Mt->new(\$seed);
\$pdf = Math::Random::AcceptReject->new(
xmax   => 2,
ymax   => 2,
pdf    => sub { \$_[0] },
random => sub { \$mt->rand() };
);```

DESCRIPTION

This module implements acceptance-rejection transformations of uniformly distributed random numbers to mostly arbitrary probability density functions (PDFs).

Note that whereas J. von Neumann's algorithm can transform from arbitrary source PDFs to arbitrary destination PDFs, this module is currently limited to uniform `[0,1]` source PDFs!

METHODS

new

Creates a new random number generator. Takes named arguments.

Mandatory parameters:

```  pdf:  The probability density function. This can either be a
subroutine reference which takes an argument ('x') and
returns f(x), a Math::Symbolic tree representing f(x) and
using the variable 'x', or a string which can be parsed
as such a Math::Symbolic tree.
ymax: Maximum value of the target PDF f(x) in the x range. This
max theoretically be safely set to a very large value which
is much higher than the real maximum of f(x) within
the range [xmin,xmax]. The efficiency of the algorithm goes
down with ```

Optional parameters:

```  random: The random number generator. Defaults to using Perl's
rand() function. May be set to either 'rand' for the
default or a subroutine reference for custom random
number generators. Expected to return one or more(!)
random numbers per call.
xmin:   Minimum value for x. Defaults to 0.
xmax:   Maximum value for x. Defaults to 1.```

rand

Returns the next random number of PDF `f(x)` as specified by the `pdf` parameter to `new()`.

http://en.wikipedia.org/wiki/Rejection_sampling

Math::Symbolic

The examples in the examples/ subdirectory of this distribution.

AUTHOR

Steffen Mueller, <smueller@cpan.org>