randomNormal method

void randomNormal(
  1. double std, {
  2. int seed = 42,
})

Fills with N(0, std^2)

Implementation

void randomNormal(double std, {int seed = 42}) {
  final rng = math.Random(seed);
  for (var i = 0; i < data.length; i += 2) {
    final u1 = rng.nextDouble().clamp(1e-12, 1.0);
    final u2 = rng.nextDouble();
    final r = math.sqrt(-2.0 * math.log(u1));
    final theta = 2.0 * math.pi * u2;
    data[i] = std * r * math.cos(theta);
    if (i + 1 < data.length) data[i + 1] = std * r * math.sin(theta);
  }
}