1Math::Random::MT::Auto:U:sRearngCeo(n3t)ributed Perl DocMuamtehn:t:aRtainodnom::MT::Auto::Range(3)
2
3
4

NAME

6       Math::Random::MT::Auto::Range - Range-valued PRNGs
7

SYNOPSIS

9           use strict;
10           use warnings;
11           use Math::Random::MT::Auto::Range;
12
13           # Integer random number range
14           my $die = Math::Random::MT::Auto::Range->new(LO => 1, HI => 6);
15           my $roll = $die->rrand();
16
17           # Floating-point random number range
18           my $compass = Math::Random::MT::Auto::Range->new(LO => 0, HI => 360,
19                                                            TYPE => 'DOUBLE');
20           my $course = $compass->rrand();
21

DESCRIPTION

23       This module creates range-valued pseudorandom number generators (PRNGs)
24       that return random values between two specified limits.
25
26       While useful in itself, the primary purpose of this module is to
27       provide an example of how to create subclasses of
28       Math::Random::MT::Auto within Object::InsideOut's inside-out object
29       model.
30

MODULE DECLARATION

32       Add the following to the top of our application code:
33
34           use strict;
35           use warnings;
36           use Math::Random::MT::Auto::Range;
37
38       This module is strictly OO, and does not export any functions or
39       symbols.
40

METHODS

42       Math::Random::MT::Auto::Range->new
43           Creates a new range-valued PRNG.
44
45               my $prng = Math::Random::MT::Auto::Range->new( %options );
46
47           Available options are:
48
49           'LOW' => $num
50           'HIGH' => $num
51               Sets the limits over which the values return by the PRNG will
52               range.  These arguments are mandatory, and "LOW" must not be
53               equal to "HIGH".
54
55               If the "TYPE" for the PRNG is "INTEGER", then the range will be
56               "LOW" to "HIGH" inclusive (i.e., [LOW, HIGH]).  If "DOUBLE",
57               then "LOW" inclusive to "HIGH" exclusive (i.e., [LOW, HIGH)).
58
59               "LO" and "HI" can be used as synonyms for "LOW" and "HIGH",
60               respectively.
61
62           'TYPE' => 'INTEGER'
63           'TYPE' => 'DOUBLE'
64               Sets the type for the values returned from the PRNG.  If "TYPE"
65               is not specified, it will default to "INTEGER" if both "LOW"
66               and "HIGH" are integers.
67
68           The options above are also supported using lowercase and mixed-case
69           (e.g., 'low', 'hi', 'Type', etc.).
70
71           Additionally, objects created with this package can take any of the
72           options supported by the Math::Random::MT::Auto class, namely,
73           "STATE", "SEED" and "STATE".
74
75       $obj->new
76           Creates a new PRNG in the same manner as
77           "Math::Random::MT::Auto::Range->new".
78
79               my $prng2 = $prng1->new( %options );
80
81       In addition to the methods describe below, the objects created by this
82       package inherit all the object methods provided by the
83       Math::Random::MT::Auto class, including the "-"clone()> method.
84
85       $obj->rrand
86           Returns a random number of the configured type within the
87           configured range.
88
89               my $rand = $prng->rrand();
90
91           If the "TYPE" for the PRNG is "INTEGER", then the range will be
92           "LOW" to "HIGH" inclusive (i.e., [LOW, HIGH]).  If "DOUBLE", then
93           "LOW" inclusive to "HIGH" exclusive (i.e., [LOW, HIGH)).
94
95       $obj->set_range_type
96           Sets the numeric type for the random numbers returned by the PRNG.
97
98               $prng->set_range_type('INTEGER');
99                 # or
100               $prng->set_range_type('DOUBLE');
101
102       $obj->get_range_type
103           Returns the numeric type ('INTEGER' or 'DOUBLE') for the random
104           numbers returned by the PRNG.
105
106               my $type = $prng->get_range_type();
107
108       $obj->set_range
109           Sets the limits for the PRNG's return value range.
110
111               $prng->set_range($lo, $hi);
112
113           $lo must not be equal to $hi.
114
115       $obj->get_range
116           Returns a list of the PRNG's range limits.
117
118               my ($lo, $hi) = $prng->get_range();
119

INSIDE-OUT OBJECTS

121       Capabilities provided by Object::InsideOut are supported by this
122       modules.  See "INSIDE-OUT OBJECTS" in Math::Random::MT::Auto for more
123       information.
124
125   Coercion
126       Object coercion is supported in the same manner as documented in See
127       "Coercion" in Math::Random::MT::Auto except that the underlying random
128       number method is "->rrand()".
129

DIAGNOSTICS

131       ·   Missing parameter: LOW
132
133       ·   Missing parameter: HIGH
134
135           The LOW and HIGH values for the range must be specified to ->new().
136
137       ·   Arg to ->set_range_type() must be 'INTEGER' or 'DOUBLE'
138
139           Self explanatory.
140
141       ·   ->range() requires two numeric args
142
143           Self explanatory.
144
145       ·   Invalid arguments: LOW and HIGH are equal
146
147           You cannot specify a range of zero width.
148
149       This module will reverse the range limits if they are specified in the
150       wrong order (i.e., it makes sure that "LOW < HIGH").
151

SEE ALSO

153       Math::Random::MT::Auto
154
155       Object::InsideOut
156

AUTHOR

158       Jerry D. Hedden, <jdhedden AT cpan DOT org>
159
161       Copyright 2005 - 2009 Jerry D. Hedden. All rights reserved.
162
163       This program is free software; you can redistribute it and/or modify it
164       under the same terms as Perl itself.
165
166
167
168perl v5.32.0                      2020-07-28  Math::Random::MT::Auto::Range(3)
Impressum