z tego co mi się wydaje to wystarczy zsumować około 10-30 razy zmienną o rozkładzie równomiernym (albo w ogóle o dowolnym rozkładzie) i wyjdzie rozkład gaussowski. napisałem programik sprawdzający i rzeczywiście coś w tym stylu wychodzi:
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cstring>
#define ILE 30
#define PRZED 5
#define GAUSS_RAND_MAX (ILE*(PRZED-1)+1)
int rand_gauss()
{
int s = 0;
for (int i=0; i<ILE; i++)
s+=rand()%PRZED;
return s;
}
int main()
{
srand(time(0));
int t[GAUSS_RAND_MAX];
memset(t,0,sizeof(int)*GAUSS_RAND_MAX);
for (int i=0; i<1000000; i++)
t[rand_gauss()]++;
for (int i=0; i<GAUSS_RAND_MAX; i++)
printf("% 4d: %d\n",i,t[i]);
return 0;
}
możesz sobie pozmieniać parametry, znormalizować oraz przesunąć przedział tak żeby wyszedł ci czubeczek w pobliżu 0.