Thank you, yes, (low) friction is important.
So you’d transition as follows
// less friction, but opaque `true` in the end result
[100, 200, 300].choose; // sketch
[100, 200, 300].choose([1, 5, 2]); // tweak
[100, 200, 300].choose([0.125, 0.625, 0.25], true); // finish
The alternative would be:
// more friction but clearer
[100, 200, 300].choose; // sketch
[100, 200, 300].choose([1, 5, 2]); // tweak
[100, 200, 300].wchoose([0.125, 0.625, 0.25]); // finish
Or, another one:
// more friction but clearer
[100, 200, 300].choose; // sketch
[100, 200, 300].wchooseN([1, 5, 2]); // tweak
[100, 200, 300].wchoose([0.125, 0.625, 0.25]); // finish
As we have it now:
// more friction but clearer
[100, 200, 300].choose; // sketch
[100, 200, 300].wchoose([1, 5, 2].normalizeSum); // tweak
[100, 200, 300].wchoose([0.125, 0.625, 0.25]); // finish