Math::Random::OO::Bootstrap - Generate random numbers with bootstrap


Math-Random-OO documentation Contained in the Math-Random-OO distribution.

Index


Code Index:

NAME

Top

Math::Random::OO::Bootstrap - Generate random numbers with bootstrap resampling from a non-parametric distibution

SYNOPSIS

Top

  use Math::Random::OO::Bootstrap;
  @sample = qw( 2 3 3 4 4 5 5 6 6 7 );
  $prng = Math::Random::OO::Bootstrap->new(@sample);
  $prng->seed(42);
  $prng->next() # draws randomly from the sample

DESCRIPTION

Top

This subclass of Math::Random::OO generates random numbers with bootstrap resampling (i.e. resampling with replacement) from a given set of observations. Each item in the sample array is drawn with equal probability.

USAGE

Top

new

 $prng = Math::Random::OO::Bootstrap->new(@sample);
 $prng = Math::Random::OO::Bootstrap->new(\@sample);

new takes either a list or a reference to an array containing a set of observations and returns a new Math::Random::OO::Bootstrap object. If a reference is provided, the object will make an internal copy of the array to avoid unexpected results if the source reference is modified.

If the desired sample is an array of array references, the list must be enclosed in an anonymous array reference to avoid ambiguity.

 @sample = ( [ 1, 2, 3], [2, 3, 4] );

 # Correct way
 $prng = Math::Random::OO::Bootstrap->new( [ @sample ] );

 # Incorrect -- will only use [1, 2, 3] as the desired sample
 $prng = Math::Random::OO::Bootstrap->new( @sample );

It is an error to call new with no arguments.

seed

 $rv = $prng->seed( @seeds );

This method seeds the random number generator. At the moment, only the first seed value matters.

next

 $rnd = $prng->next();

This method returns the next random number from the random number generator by resampling with replacement from the provided data. It does not take any parameters.

BUGS

Top

Please report bugs using the CPAN Request Tracker at

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Math-Random-OO

AUTHOR

Top

David A. Golden (DAGOLDEN)

dagolden@dagolden.com

http://dagolden.com/

COPYRIGHT

Top

SEE ALSO

Top

Math::Random::OO


Math-Random-OO documentation Contained in the Math-Random-OO distribution.
package Math::Random::OO::Bootstrap;
use 5.006;
use strict;
use warnings;
our $VERSION = '0.21';

# Required modules
use Carp;
use Params::Validate ':all';

# ISA
use base qw( Class::Accessor::Fast );
#--------------------------------------------------------------------------#
# main pod documentation #####
#--------------------------------------------------------------------------#

#--------------------------------------------------------------------------#
# new()
#--------------------------------------------------------------------------#


{
    my $param_spec = {
        data => { type => ARRAYREF },
        size => { type => SCALAR }
    };

    __PACKAGE__->mk_accessors( keys %$param_spec );
    #__PACKAGE__->mk_ro_accessors( keys %$param_spec );

    sub new {
        my $class = shift;
        my $self = bless {}, ref($class) ? ref($class) : $class;
        if ( @_ == 0 ) {
            croak 'Math::Random::OO::Bootstrap->new() requires an argument';
        }
        $self->data( ref $_[0] eq 'ARRAY' ? [ @{$_[0]} ] : [ @_ ] );
        $self->size( scalar @{$self->data} );
        return $self;
    }
}


#--------------------------------------------------------------------------#
# seed()
#--------------------------------------------------------------------------#

sub seed {
	my $self = shift;
    srand($_[0]);
}


#--------------------------------------------------------------------------#
# next()
#--------------------------------------------------------------------------#

sub next {
	my ($self) = @_;
    my $rnd = int(rand($self->size)); # index 0 to (size-1)
    return $self->data->[$rnd];	
}

1; #this line is important and will help the module return a true value
__END__