RNGSection: User Contributed Perl Documentation (3)Updated: 2004-06-15 |
RNGSection: User Contributed Perl Documentation (3)Updated: 2004-06-15 |
use PDL; use PDL::GSL::RNG;
$rng = PDL::GSL::RNG->new('taus');
$rng->set_seed(time());
$a=zeroes(5,5,5)
$rng->get_uniform($a); # inplace
$b=$rng->get_uniform(3,4,5); # creates new pdl
The avaible RNGs are: slatec, cmrg, gfsr4, minstd, mrg, mt19937, r250, ran0, ran1, ran2, ran3, rand48, rand, random8_bsd, random8_glibc2, random8_libc5, random128_bsd, random128_glibc2, random128_libc5, random256_bsd, random256_glibc2, random256_libc5, random32_bsd, random32_glibc2, random32_libc5, random64_bsd, random64_glibc2, random64_libc5, random_bsd, random_glibc2, random_libc5, randu, ranf, ranlux389, ranlux, ranmar, taus, transputer, tt800, uni32, uni, vax, zuf, default. The last one (default) uses the enviroment variable GSL_RNG_TYPE. Please check the GSL documentation for more information.
Usage:
$blessed_ref = PDL::GSL::RNG->new($RNG_name);
Example:
$rng = PDL::GSL::RNG->new('taus');
Usage:
$rng->set_seed($integer);
Example:
$rng->set_seed(666);
Usage:
$integer = $rng->min();
Example:
$min = $rng->min(); $max = $rng->max();
Usage:
$integer = $rng->max();
Example:
$min = $rng->min(); $max = $rng->max();
Usage:
$string = $rng->name();
Example:
$name = $rng->name();
Usage:
$piddle = $rng->get_uniform($list_of_integers) $rng->get_uniform($piddle);
Example:
$a = zeroes 5,6; $max=100; $o = $rng->get_uniform(10,10); $rng->get_uniform($a);
Usage:
$piddle = $rng->get_uniform_pos($list_of_integers) $rng->get_uniform_pos($piddle);
Example:
$a = zeroes 5,6; $o = $rng->get_uniform_pos(10,10); $rng->get_uniform_pos($a);
Usage:
$piddle = $rng->get($list_of_integers) $rng->get($piddle);
Example:
$a = zeroes 5,6; $o = $rng->get(10,10); $rng->get($a);
Usage:
$piddle = $rng->get($max, $list_of_integers) $rng->get($max, $piddle);
Example:
$a = zeroes 5,6; $max=100; $o = $rng->get(10,10); $rng->get($a);
The general form is
ran_[distrib](args)
where distrib can be any of the ones shown below.
They accept the parameters of the distribution and a specification of where to put output. This spec can be in form of list of integers that specify the dimensions of the ouput piddle or an existing piddle that will be filled with values inplace.
Usage:
# gaussian dist $piddle = $rng->ran_gaussian($sigma,[list of integers]); $rng->ran_gaussian($sigma,$piddle);
# gaussian tail $piddle = $rng->ran_ugaussian_tail($tail,[list of integers]); $rng->ran_ugaussian_tail($tail,$piddle);
# exponential dist $piddle = $rng->ran_exponential($mu,[list of integers]); $rng->ran_exponential($mu,$piddle);
# laplacian dist $piddle = $rng->ran_laplace($mu,[list of integers]); $rng->ran_laplace($mu,$piddle);
$piddle = $rng->ran_exppow($mu,$a,[list of integers]); $rng->ran_exppow($mu,$a,$piddle);
$piddle = $rng->ran_cauchy($mu,[list of integers]); $rng->ran_cauchy($mu,$piddle);
$piddle = $rng->ran_rayleigh($sigma,[list of integers]); $rng->ran_rayleigh($sigma,$piddle);
$piddle = $rng->ran_rayleigh_tail($a,$sigma,[list of integers]); $rng->ran_rayleigh_tail($a,$sigma,$piddle);
$piddle = $rng->ran_levy($mu,$a,[list of integers]); $rng->ran_levy($mu,$a,$piddle);
$piddle = $rng->ran_gamma($a,$b,[list of integers]); $rng->ran_gamma($a,$b,$piddle);
$piddle = $rng->ran_flat($a,$b,[list of integers]); $rng->ran_flat($a,$b,$piddle);
$piddle = $rng->ran_lognormal($zeta, $sigma,[list of integers]); $rng->ran_lognormal($zeta, $sigma,$piddle);
$piddle = $rng->ran_chisq($nu,[list of integers]); $rng->ran_chisq($nu,$piddle);
$piddle = $rng->ran_fdist($nu1, $nu2,[list of integers]); $rng->ran_fdist($nu1, $nu2,$piddle);
$piddle = $rng->ran_tdist($nu,[list of integers]); $rng->ran_tdist($nu,$piddle);
$piddle = $rng->ran_beta($a,$b,[list of integers]); $rng->ran_beta($a,$b,$piddle);
$piddle = $rng->ran_logistic($m,[list of integers]u) $rng->ran_logistic($m,$piddleu)
$piddle = $rng->ran_pareto($a,$b,[list of integers]); $rng->ran_pareto($a,$b,$piddle);
$piddle = $rng->ran_weibull($mu,$a,[list of integers]); $rng->ran_weibull($mu,$a,$piddle);
$piddle = $rng->ran_gumbel1($a,$b,[list of integers]); $rng->ran_gumbel1($a,$b,$piddle);
$piddle = $rng->ran_gumbel2($a,$b,[list of integers]); $rng->ran_gumbel2($a,$b,$piddle);
$piddle = $rng->ran_poisson($mu,[list of integers]); $rng->ran_poisson($mu,$piddle);
$piddle = $rng->ran_bernoulli($p,[list of integers]); $rng->ran_bernoulli($p,$piddle);
$piddle = $rng->ran_binomial($p,$n,[list of integers]); $rng->ran_binomial($p,$n,$piddle);
$piddle = $rng->ran_negative_binomial($p,$n,[list of integers]); $rng->ran_negative_binomial($p,$n,$piddle);
$piddle = $rng->ran_pascal($p,$n,[list of integers]); $rng->ran_pascal($p,$n,$piddle);
$piddle = $rng->ran_geometric($p,[list of integers]); $rng->ran_geometric($p,$piddle);
$piddle = $rng->ran_hypergeometric($n1, $n2, $t,[list of integers]); $rng->ran_hypergeometric($n1, $n2, $t,$piddle);
$piddle = $rng->ran_logarithmic($p,[list of integers]); $rng->ran_logarithmic($p,$piddle);
Example:
$o = $rng->ran_gaussian($sigma,10,10); $rng->ran_gaussian($sigma,$a);
Usage:
$piddle = $rng->ran_[distribution]($distr_parameters_list,$piddle_dim_list); $rng->ran_[distribution]($distr_parameters_list,$piddle);
Example:
$sigma_pdl = rvals zeroes 11,11; $o = $rng->ran_gaussian_var($sigma_pdl);
Usage:
$rng->ran_additive_gaussian($sigma,$piddle);
Example:
$rng->ran_additive_gaussian(1,$image);
Usage:
$rng->ran_additive_poisson($mu,$piddle);
Example:
$rng->ran_additive_poisson(1,$image);
Usage:
$rng->ran_feed_poisson($piddle);
Example:
$rng->ran_feed_poisson($image);
Usage:
$piddle = $rng->ran_bivariate_gaussian($sigma_x,$sigma_y,$rho,$n);
Example:
$o = $rng->ran_bivariate_gaussian(1,2,0.5,1000);
Usage:
$piddle = $rng->ran_dir($ndim,$n);
Example:
$o = $rng->ran_dir($ndim,$n);
Usage:
$discrete_dist_handle = $rng->ran_discrete_preproc($double_piddle_prob);
Example:
$prob = pdl [0.1,0.3,0.6]; $ddh = $rng->ran_discrete_preproc($prob); $o = $rng->ran_discrete($discrete_dist_handle,100);
Usage:
$piddle = $rng->ran_discrete($discrete_dist_handle,$num);
Example:
$prob = pdl [0.1,0.3,0.6]; $ddh = $rng->ran_discrete_preproc($prob); $o = $rng->ran_discrete($discrete_dist_handle,100);
# =head1 Shuffling and choosing.
Usage:
$rng->ran_shuffle($piddle);
Usage:
$rng->ran_shuffle_vec(@vec);
Usage:
$rng->ran_choose($inpiddle,$outpiddle);
Usage:
@choosen = $rng->ran_choose_vec($n,@vec);
Usage:
$rng->ran_ver($x0, $r, $n);
Usage:
$rng->ran_caos($m,$n);
The GSL documentation is online at
http://sources.redhat.com/gsl/ref/gsl-ref_toc.html
The GSL RNG and randist modules were written by James Theiler.