Prorate divide stream proportionally


superclass: FilterPattern



*new(proportions, pattern)

proportions: a pattern that returns either numbers (divides the pattern into pairs)

or arrays of size n which are used to split up the input into n parts.

pattern: a numerical pattern





// examples:



// divide 1 into various proportions

(

a = Prorate(Pseq([0.35, 0.5, 0.8]), 1);


x = a.asStream;


x.nextN(8)

)


// divide a pattern into various proportions

(

a = Prorate(Pseq([0.35, 0.5, 0.8]), Prand([20, 1], inf));


x = a.asStream;


x.nextN(8)

)



// divide 1 into several parts

(

a = Prorate(Pseq([[1, 2], [5, 7], [4, 8, 9]]).collect(_.normalizeSum), 1);


x = a.asStream;


x.nextN(8)

)