Venus::Random - Random Class
Random Class for Perl 5
package main; use Venus::Random; my $random = Venus::Random->new(42); # my $bit = $random->bit; # 1
This package provides an object-oriented interface for Perl's pseudo-random number generator (or PRNG) which produces a deterministic sequence of bits which approximate true randomness.
This package inherits behaviors from:
Venus::Kind::Utility
This package integrates behaviors from:
Venus::Role::Accessible
Venus::Role::Buildable
Venus::Role::Valuable
This package provides the following methods:
bit() (number)
The bit method returns a 1 or 0 value, randomly.
1
0
Since 1.11
1.11
# given: synopsis package main; my $bit = $random->bit; # 0 # $bit = $random->bit; # 1
boolean() (boolean)
The boolean method returns a true or false value, randomly.
true
false
# given: synopsis package main; my $boolean = $random->boolean; # 0 # $boolean = $random->boolean; # 1
byte() (string)
The byte method returns random byte characters, randomly.
# given: synopsis package main; my $byte = $random->byte; # "\xBE" # $byte = $random->byte; # "W"
character() (string)
The character method returns a random character, which is either a "digit", "letter", or "symbol" value.
# given: synopsis package main; my $character = $random->character; # ")" # $character = $random->character; # 4
collect(number $times, string | coderef $code, any @args) (number | string)
The collect method dispatches to the specified method or coderef, repeatedly based on the number of $times specified, and returns the random concatenated results from each dispatched call. By default, if no arguments are provided, this method dispatches to "digit".
$times
# given: synopsis package main; my $collect = $random->collect; # 7 # $collect = $random->collect; # 3
# given: synopsis package main; my $collect = $random->collect(2); # 73 # $collect = $random->collect(2); # 14
# given: synopsis package main; my $collect = $random->collect(5, "letter"); # "iKWMv" # $collect = $random->collect(5, "letter"); # "Papmm"
# given: synopsis package main; my $collect = $random->collect(10, "character"); # ")48R+a}[Lb" # $collect = $random->collect(10, "character"); # "?&0725^,0w"
digit() (number)
The digit method returns a random digit between 0 and 9.
9
# given: synopsis package main; my $digit = $random->digit; # 7 # $digit = $random->digit; # 3
float(number $place, number $from, number $upto) (number)
The float method returns a random float.
# given: synopsis package main; my $float = $random->float; # 1447361.5 # $float = $random->float; # "0.0000"
# given: synopsis package main; my $float = $random->float(2); # 380690.82 # $float = $random->float(2); # 694.57
# given: synopsis package main; my $float = $random->float(2, 1, 5); # 3.98 # $float = $random->float(2, 1, 5); # 2.37
# given: synopsis package main; my $float = $random->float(3, 1, 2); # 1.745 # $float = $random->float(3, 1, 2); # 1.343
letter() (string)
The letter method returns a random letter, which is either an "uppercased" or "lowercased" value.
# given: synopsis package main; my $letter = $random->letter; # "i" # $letter = $random->letter; # "K"
lowercased() (string)
The lowercased method returns a random lowercased letter.
# given: synopsis package main; my $lowercased = $random->lowercased; # "t" # $lowercased = $random->lowercased; # "i"
nonzero(string | coderef $code, any @args) (number | string)
The nonzero method dispatches to the specified method or coderef and returns the random value ensuring that it's never zero, not even a percentage of zero. By default, if no arguments are provided, this method dispatches to "digit".
# given: synopsis package main; my $nonzero = $random->nonzero; # 7 # $nonzero = $random->nonzero; # 3
# given: synopsis package main; my $nonzero = $random->nonzero("pick"); # 1.74452500006101 # $nonzero = $random->nonzero("pick"); # 1.34270147871891
# given: synopsis package main; my $nonzero = $random->nonzero("number"); # 3427014 # $nonzero = $random->nonzero("number"); # 3
# given: synopsis package main; my $nonzero = $random->nonzero("number", 0, 10); # 8 # $nonzero = $random->nonzero("number", 0, 10); # 3
number(number $from, number $upto) (number)
The number method returns a random number within the range provided. If no arguments are provided, the range is from 0 to 2147483647. If only the first argument is provided, it's treated as the desired length of the number.
2147483647
# given: synopsis package main; my $number = $random->number; # 3427014 # $number = $random->number; # 3
# given: synopsis package main; my $number = $random->number(5, 50); # 39 # $number = $random->number(5, 50); # 20
# given: synopsis package main; my $number = $random->number(100, 20); # 42 # $number = $random->number(100, 20); # 73
# given: synopsis package main; my $number = $random->number(5); # 74451 # $number = $random->number(5); # 34269
pick(Num $data) (Num)
The pick method is the random number generator and returns a random number. By default, calling this method is equivalent to call "rand" in perlfunc. This method can be overridden in a subclass to provide a custom generator, e.g. a more cyptographically secure generator.
Since 1.23
1.23
# given: synopsis package main; my $pick = $random->pick; # 0.744525000061007 # $pick = $random->pick; # 0.342701478718908
# given: synopsis package main; my $pick = $random->pick(100); # 74.4525000061007 # $pick = $random->pick(100); # 34.2701478718908
# given: synopsis package main; my $pick = $random->pick(2); # 1.48905000012201 # $pick = $random->pick(2); # 0.685402957437816
range(string $from, string $to) (number)
The range method returns a random number within the range provided. If no arguments are provided, the range is from 0 to 2147483647.
# given: synopsis package main; my $range = $random->range(1, 10); # 8 # $range = $random->range(1, 10); # 4
# given: synopsis package main; my $range = $random->range(10, 1); # 5 # $range = $random->range(10, 1); # 8
# given: synopsis package main; my $range = $random->range(0, 60); # 45 # $range = $random->range(0, 60); # 20
# given: synopsis package main; my $range = $random->range(-5, -1); # -2 # $range = $random->range(-5, -1); # -4
repeat(number $times, string | coderef $code, any @args) (number | string)
The repeat method dispatches to the specified method or coderef, repeatedly based on the number of $times specified, and returns the random results from each dispatched call. In list context, the results from each call is returned as a list, in scalar context the results are concatenated.
# given: synopsis package main; my @repeat = $random->repeat(2); # (7, 3) # @repeat = $random->repeat(2); # (1, 4)
# given: synopsis package main; my @repeat = $random->repeat(2, "float"); # (1447361.5, "0.0000") # @repeat = $random->repeat(2, "float"); # ("482092.1040", 1555.7410393)
# given: synopsis package main; my @repeat = $random->repeat(2, "character"); # (")", 4) # @repeat = $random->repeat(2, "character"); # (8, "R")
reseed(string $seed) (Venus::Random)
The reseed method sets the "srand" in perlfunc (i.e. the PRNG seed) to the value provided, or the default value used on instanstiation when no seed is passed to the constructor. This method returns the object that invoked it.
# given: synopsis package main; my $reseed = $random->reseed; # bless({value => ...}, "Venus::Random") # my $bit = $random->bit; # 0
# given: synopsis package main; my $reseed = $random->reseed(42); # bless({value => 42}, "Venus::Random") # my $bit = $random->bit; # 0
reset() (Venus::Random)
The reset method sets the "srand" in perlfunc (i.e. the PRNG seed) to the default value used on instanstiation when no seed is passed to the constructor. This method returns the object that invoked it.
# given: synopsis package main; my $reset = $random->reset; # bless({value => ...}, "Venus::Random")
restore() (Venus::Random)
The restore method sets the "srand" in perlfunc (i.e. the PRNG seed) to the original value used by "rand" in perlfunc. This method returns the object that invoked it.
# given: synopsis package main; my $restore = $random->restore; # bless({value => ...}, "Venus::Random")
select(arrayref | hashref $data) (any)
The select method returns a random value from the "hashref" or "arrayref" provided.
# given: synopsis package main; my $select = $random->select(["a".."d"]); # "c" # $select = $random->select(["a".."d"]); # "b"
# given: synopsis package main; my $select = $random->select({"a".."h"}); # "f" # $select = $random->select({"a".."h"}); # "d"
symbol() (string)
The symbol method returns a random symbol.
# given: synopsis package main; my $symbol = $random->symbol; # "'" # $symbol = $random->symbol; # ")"
uppercased() (string)
The uppercased method returns a random uppercased letter.
# given: synopsis package main; my $uppercased = $random->uppercased; # "T" # $uppercased = $random->uppercased; # "I"
Awncorp, awncorp@cpan.org
awncorp@cpan.org
Copyright (C) 2000, Awncorp, awncorp@cpan.org.
This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.
To install Venus, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Venus
CPAN shell
perl -MCPAN -e shell install Venus
For more information on module installation, please visit the detailed CPAN module installation guide.