You need to deal out a stream of items one at a time in proportions.
You could use a round robin list. A,B,C,A,B,A,B,C,A,B,A,B,C
This idea uses a bank of numerical controlled oscillators.
You have an array of buckets, and these accumulate fill in the required proportions.
You have a bucket for each destination.
OnItemRecieved{ Add requiredProportionToBuckets() // Pick distination FindBucketWithMostFill() // Look for bucket with most fill, Thats the destination, and empty it. DeliverItemToDestination( FindBucketWithMostFill() ) EmptyFullestBucket( FindBucketWithMostFill() ) }
PIP Personal Improvement Plan PIP Pick In Proportion
You could measure the rate of OnItem Requests.
Could you have a bucket that backed off traffic, like the fairground penny fall profit.
Could you have a bucket that leaked.