weightedChoice<T> method
Selects a random element from a list with weights.
Implementation
T weightedChoice<T>(List<T> items, List<double> weights) {
assert(items.length == weights.length);
final totalWeight = weights.reduce((a, b) => a + b);
var random = _random.nextDouble() * totalWeight;
for (int i = 0; i < items.length; i++) {
random -= weights[i];
if (random <= 0) {
return items[i];
}
}
return items.last;
}