choice static method

dynamic choice(
  1. List array, [
  2. List<double>? probabilities
])

Returns a random sample from a given array.

Implementation

static choice(List array, [List<double>? probabilities]) {
	final random = math.Random().nextDouble();

	if ( probabilities == null ) {
		return array[ ( math.Random().nextDouble() * array.length ).floor() ];
	}
    else {
		double probability = 0;

		final index = array.map((value){
			probability += probabilities[ array.indexOf(value) ];
			return probability;
		} ).toList().indexWhere((cumulativeProbability) => cumulativeProbability >= random);//.findIndex( ( probability ) => probability >= random );

		return array[ index ];
	}
}