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();