Generate pseudo Gaussian random numbers for pwm pins

if you are compiling for non AVR Arduino (ESP32 for example) then you could use std::normal_distribution

here is an example:

#include <random>
std::default_random_engine generator;
std::normal_distribution<double> distribution(5.0, 2.0); // distribution parameters, mean (μ=5.0) and stddev (σ=2.0),

const size_t intervalCount = 10;
size_t draws[intervalCount+1] = {};

const size_t experimentCount = 10000;
const size_t starCount = 100; 

void setup() {
  Serial.begin(115200); Serial.println();

  for (size_t i = 0; i < experimentCount; i++) {
    double number = distribution(generator);
    if ((number >= 0.0) && (number < intervalCount)) ++draws[size_t(number)];
  }

  Serial.println("normal_distribution μ=5.0 / σ=2.0");

  for (size_t i = 0; i < intervalCount; ++i) {
    Serial.print(i); Serial.print(" - "); Serial.print(i + 1); Serial.write('\t');
    for (size_t j = 0; j < draws[i] * starCount / experimentCount; j++) Serial.write('*');
    Serial.println();
  }
  Serial.println();
}

void loop() {}

you should see in the Serial Monitor

normal_distribution μ=5.0 / σ=2.0
0 - 1	*
1 - 2	****
2 - 3	*********
3 - 4	***************
4 - 5	******************
5 - 6	*******************
6 - 7	***************
7 - 8	********
8 - 9	****
9 - 10	*

cf https://www.cplusplus.com/reference/random/normal_distribution/