randWeightedTake<T> static method
Implementation
static T randWeightedTake<T>(List<T> arr, List<double> weights) {
final total = weights.reduce((a, b) => a + b);
var roll = _rnd.nextDouble() * total;
for (var i = 0; i < arr.length; i++) {
roll -= weights[i];
if (roll <= 0) {
weights.removeAt(i);
return arr.removeAt(i);
}
}
weights.removeLast();
return arr.removeLast();
}