|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.databene.benerator.util.AbstractGenerator<E>
org.databene.benerator.primitive.number.AbstractNumberGenerator<E>
org.databene.benerator.primitive.number.RecurrenceRelationNumberGenerator<E>
public abstract class RecurrenceRelationNumberGenerator<E extends java.lang.Number>
Parent class for Number Generators that calculate numbers recursively.
Child classes can define recursive sequences easily by defining a depth and
implementing the methods a0(int) and aN().
The recursion depth needs to be specified in the constructor call,
a0(int) needs to return the predefined initial value(s) of the
sequence (f0, f1, ...) and aN() implements the recursion
(fN = f(f(n-1), f(n-2), ...).
Example: The Fibonacci sequence is defined recursively by
F(0) = 1F(1) = 1F(n) = F(n-1) + F(n-2)depth = 2
protected Long aN() {
return aN(-1) + aN(-2);
}
protected Long a0(int n) {
return (n == 0 ? 0L : 1L);
}
Have a look at the FibonacciLongGenerator source code for the complete implementation.
| Field Summary |
|---|
| Fields inherited from class org.databene.benerator.primitive.number.AbstractNumberGenerator |
|---|
generatedType, max, min, precision |
| Fields inherited from class org.databene.benerator.util.AbstractGenerator |
|---|
context, state |
| Constructor Summary | |
|---|---|
RecurrenceRelationNumberGenerator(java.lang.Class<E> targetType,
int depth,
E min,
E max)
|
|
| Method Summary | |
|---|---|
protected abstract E |
a0(int n)
Must be implemented by child classes to return the seed values of the recurrence relation. |
protected abstract E |
aN()
Must be implemented by child classes to implement the recurrence relation. |
protected E |
aN(int offset)
Provides the most recent calculated values. |
protected E |
calculateNext()
|
void |
close()
See Generator.close() |
E |
generate()
See Generator.generate() |
int |
getDepth()
|
int |
getN()
|
void |
init(GeneratorContext context)
|
void |
reset()
See Resettable.reset() |
protected void |
resetMembers()
|
| Methods inherited from class org.databene.benerator.primitive.number.AbstractNumberGenerator |
|---|
getGeneratedType, getMax, getMin, getPrecision, isParallelizable, isThreadSafe, setMax, setMin, setPrecision |
| Methods inherited from class org.databene.benerator.util.AbstractGenerator |
|---|
assertInitialized, assertNotInitialized, toString, wasInitialized |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public RecurrenceRelationNumberGenerator(java.lang.Class<E> targetType,
int depth,
E min,
E max)
| Method Detail |
|---|
public int getDepth()
public int getN()
public void init(GeneratorContext context)
init in interface Generator<E extends java.lang.Number>init in class AbstractNumberGenerator<E extends java.lang.Number>public E generate()
Generator.generate()
public void reset()
Resettable.reset()
reset in interface org.databene.commons.Resettablereset in class AbstractGenerator<E extends java.lang.Number>public void close()
Generator.close()
close in interface java.io.Closeableclose in interface Generator<E extends java.lang.Number>close in class AbstractGenerator<E extends java.lang.Number>protected abstract E a0(int n)
protected abstract E aN()
aN(int) method to retrieve the most recent calculated values.
protected final E aN(int offset)
-1 stands for a(N-1).
protected void resetMembers()
protected E calculateNext()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||