NAME
Math::GSL::RNG - Random Number Generators
SYNOPSIS
use Math::GSL::RNG qw/:all/;
my $rng = Math::GSL::RNG->new;
my @random = map { $rng->get } (1..100);
Math::GSL::RNG->new($type, $seed)
my $rng = Math::GSL::RNG->new;
my $rng = Math::GSL::RNG->new($gsl_rng_knuthran,5);
Creates a new RNG object of type $type, seeded with $seed. Both of these parameters are optional. The type $gsl_rng_default is used when no $type is given.
copy()
my $copy = $rng->copy;
Make a copy of a RNG object.
free()
$rng->free();
Free memory associated with RNG object.
name()
my $name = $rng->name();
Get the name of the RNG object as a string.
get()
my $nextval = $rng->get();
Get the next random value from the RNG object.
DESCRIPTION
- gsl_rng_alloc
- gsl_rng_set
- gsl_rng_get
- gsl_rng_free
- gsl_rng_memcpy
- gsl_rng_fwrite
- gsl_rng_fread
- gsl_rng_clone
- gsl_rng_max
- gsl_rng_min
- gsl_rng_name
- gsl_rng_size
- gsl_rng_state
- gsl_rng_print_state
Random Number Generator Types
- $gsl_rng_default
- $gsl_rng_knuthran
- $gsl_rng_ran0
- $gsl_rng_borosh13
- $gsl_rng_coveyou
- $gsl_rng_cmrg
- $gsl_rng_fishman18
- $gsl_rng_fishman20
- $gsl_rng_fishman2x
- $gsl_rng_gfsr4
- $gsl_rng_knuthran
- $gsl_rng_knuthran2
- $gsl_rng_knuthran2002
- $gsl_rng_lecuyer21
- $gsl_rng_minstd
- $gsl_rng_mrg
- $gsl_rng_mt19937
- $gsl_rng_mt19937_1999
- $gsl_rng_mt19937_1998
- $gsl_rng_r250
- $gsl_rng_ran0
- $gsl_rng_ran1
- $gsl_rng_ran2
- $gsl_rng_ran3
- $gsl_rng_rand
- $gsl_rng_rand48
- $gsl_rng_random128_bsd
- $gsl_rng_random128_gli
- $gsl_rng_random128_lib
- $gsl_rng_random256_bsd
- $gsl_rng_random256_gli
- $gsl_rng_random256_lib
- $gsl_rng_random32_bsd
- $gsl_rng_random32_glib
- $gsl_rng_random32_libc
- $gsl_rng_random64_bsd
- $gsl_rng_random64_glib
- $gsl_rng_random64_libc
- $gsl_rng_random8_bsd
- $gsl_rng_random8_glibc
- $gsl_rng_random8_libc5
- $gsl_rng_random_bsd
- $gsl_rng_random_glibc2
- $gsl_rng_random_libc5
- $gsl_rng_randu
- $gsl_rng_ranf
- $gsl_rng_ranlux
- $gsl_rng_ranlux389
- $gsl_rng_ranlxd1
- $gsl_rng_ranlxd2
- $gsl_rng_ranlxs0
- $gsl_rng_ranlxs1
- $gsl_rng_ranlxs2
- $gsl_rng_ranmar
- $gsl_rng_slatec
- $gsl_rng_taus
- $gsl_rng_taus2
- $gsl_rng_taus113
- $gsl_rng_transputer
- $gsl_rng_tt800
- $gsl_rng_uni
- $gsl_rng_uni32
- $gsl_rng_vax
- $gsl_rng_waterman14
- $gsl_rng_zuf
For more informations on the functions, we refer you to the GSL offcial documentation:
http://www.gnu.org/software/gsl/manual/html_node/
Tip : search on google: site:http://www.gnu.org/software/gsl/manual/html_node/ name_of_the_function_you_want
EXAMPLES
The following example will print out a list a random integers between certain minimum and maximum values. The command line arguments are first the number of random numbers wanted, the minimum and then maximum. The defaults are 10, 0 and 100, respectively.
use Math::GSL::RNG qw/:all/;
my $seed = int rand(100);
my $rng = Math::GSL::RNG->new($gsl_rng_knuthran, $seed );
my ($num,$min,$max) = @ARGV;
$num ||= 10;
$min ||= 0;
$max ||= 100;
print join "\n", map { $min + $rng->get % ($max-$min+1) } (1..$num);
print "\n";
The $seed
argument is optional but encouraged. This program is available in the examples/ directory that comes with the source of this module.
If you would like a series of random non-integer numbers, then you can generate one "scaling factor" and multiple by that, such as
use Math::GSL::RNG qw/:all/;
my $scale= rand(10);
my $seed = int rand(100);
my $rng = Math::GSL::RNG->new($gsl_rng_knuthran, $seed );
my ($num,$min,$max) = (10,0,100);
print join "\n", map { $scale*($min + $rng->get % ($max-$min+1)) } (1..$num);
print "\n";
AUTHORS
Jonathan Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) 2008 Jonathan Leto and Thierry Moisan
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.