On Thu, 3 Mar 2011, Caio Barros wrote:
It's funny that you said that. I slept over this problem and yes, I want the chords to have a minimun and maximun duration.
Ok. Give every chord the minimum duration, then pick random amounts of extra time to add to each, between zero and the difference between the minimum and the maximum.
If you use Tim's solution, the minimum and maximum will be scaled randomly because the sum of all random numbers is itself a random number.
Thus you if you reserve minimum time separately and use Tim's solution on the time that hasn't been allocated yet, the minimum will be exactly respected, whereas the maximum won't.
Now, to make the maximum respected, it has to be another solution than that, and to control the likelihood of getting something close to a maximum duration, it's also something else (if you have several delays close to the maximum before scaling, they won't be close to the maximum after the scaling, if it's a downwards scaling).
The problem of having three delays from 0 to M so that the sum is equal to M is the problem of picking a random place in a right triangle. If the sum has to be N (another number bigger than M), then it's a bigger right triangle with cut corners.
When you have four delays, it's about picking a random place in a triangular pyramid.
When you have more delays, you'd need a space with more than three dimensions to think about it.
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC