Bu kod, 0.8 olasılıkla 1-5 aralığında, 0.1 olasılıkla 5-10 aralığında ve 0.1 olasılıkla 10-15 aralığında bir sayı üretecektir.
class RandomNumberGenerator {
final List<double> probabilities;
final List<int> ranges;
final Random random;
RandomNumberGenerator({this.probabilities, this.ranges, this.random});
int generate() {
double randomValue = random.nextDouble();
double sum = 0.0;
for (int i = 0; i < probabilities.length; i++) {
sum += probabilities[i];
if (randomValue <= sum) {
return _randomNumberInRange(ranges[i], ranges[i + 1]);
}
}
}
int _randomNumberInRange(int min, int max) {
return random.nextInt(max - min) + min;
}
}final randomNumberGenerator = RandomNumberGenerator(
probabilities: [0.8, 0.1, 0.1],
ranges: [1, 5, 10, 15],
random: Random(),
);
int randomNumber = randomNumberGenerator.generate();