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 (*PDF*s). 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()". SEE ALSO Math::Random::MT, Math::Random, Math::Random::OO, Math::TrulyRandom Math::Symbolic The examples in the examples/ subdirectory of this distribution. AUTHOR Steffen Mueller, COPYRIGHT AND LICENSE Copyright (C) 2007 by Steffen Mueller This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.6 or, at your option, any later version of Perl 5 you may have available.