Class: Radagen::Generator
- Inherits:
-
Object
- Object
- Radagen::Generator
- Defined in:
- lib/radagen/generator.rb
Instance Method Summary collapse
-
#call(prng, size) ⇒ Object
Realize a value from the generator.
-
#gen(size = 30, seed = Random.new_seed) ⇒ Object
Generate a single value from the generator.
-
#initialize(&gen_proc) ⇒ Generator
constructor
A new instance of Generator.
-
#sample(n = 10) ⇒ Array<Object>
Generate n samples from the generator.
-
#to_enum(opts = {}) ⇒ Enumerator::Lazy
Create a lazy enumerable of generator values.
Constructor Details
#initialize(&gen_proc) ⇒ Generator
Returns a new instance of Generator.
5 6 7 |
# File 'lib/radagen/generator.rb', line 5 def initialize(&gen_proc) @gen_proc = gen_proc end |
Instance Method Details
#call(prng, size) ⇒ Object
Realize a value from the generator.
15 16 17 |
# File 'lib/radagen/generator.rb', line 15 def call(prng, size) @gen_proc.call(prng, size) end |
#gen(size = 30, seed = Random.new_seed) ⇒ Object
Generate a single value from the generator.
47 48 49 50 |
# File 'lib/radagen/generator.rb', line 47 def gen(size=30, seed=Random.new_seed) prng = prng(seed) self.call(prng, size) end |
#sample(n = 10) ⇒ Array<Object>
Note:
max size on samples is set by #to_enum
Generate n samples from the generator. Sizing is linear and starts at 0. Max size is defined by #to_enum. This is to see what type of values your generator will make.
31 32 33 |
# File 'lib/radagen/generator.rb', line 31 def sample(n=10) self.to_enum.take(n).to_a end |
#to_enum(opts = {}) ⇒ Enumerator::Lazy
Note:
the size value is the upper bound of the sizes that could be generated
Create a lazy enumerable of generator values. Size cycles from size_min to size_max
64 65 66 67 68 69 70 71 72 |
# File 'lib/radagen/generator.rb', line 64 def to_enum(opts={}) default_opts = {size_min: 0, size_max: 300, seed: Random.new_seed} size_min, size_max, seed = default_opts.merge(opts).values_at(:size_min, :size_max, :seed) prng = prng(seed) (size_min...size_max).cycle.lazy.map do |size| @gen_proc.call(prng, size) end end |