That looks really nice too.
My method to do that was to premake one array with needed distances and randomized each element a bit (the uniform variance), then it's given to each base point and converted to strand ratio values and again randomized (non uniform). Thought it was very clear way to do it.
Each base caches integer for itself and the "next" one, and later I clone the bases to make the rings (clones inherit all attributes). Each ring particle queries correct array entry from its parent and interpolates the strand for position. Same for strand, but use the "next". Right before interpolating the point, give random chance to shift the ratio slightly.
Here's my next step, shaken in a box.
www.vimeo.com/2558744 Same methods extended, although I did it in 2 branches to make it simpler. First base strands get simulated fully, as if there were no connecting strands, then the segments use them as frame for their own simulation. I think it's sufficient for now. It runs very nicely in real time.
I think I still want to add feature for the "support" strand that's in helge's example picture. Meaning the one that goes horizontally across the Y-shaped branch on top, where the base strands connect to.