Some types of content require some initial setup before random data can be generated. Other types of data benefit from some form of buffering when generating multiple instances of random data. In both of these cases, Generators can be useful, allowing the initial setup to only be performed once for a given set of parameters, and enabling any buffering behavior that needs to be performed.
For content that is likely to benefit from generators, there will be extension functions following the naming convention Make<function>Generator(). For example, MakeRangeOCGenerator(6) will return an IRangeGenerator<int> that will generate a number from 1 to 6 each time Next is called on the generator.
In general, generators will support a Next() method or similar method for generating random data. Some might include additional members, such as IEnumGeneratorTEnum, which also includes NextName for getting the name of the next enumeration item, rather than its value, or IDiceGenerator, which also includes the dice field to examine the individual dice rolls that produced the summed value.
The following types of random data have support for generators: