1/* 2 * Normal distribution table generator 3 * Taken from the uncopyrighted NISTnet code. 4 */ 5#include <stdio.h> 6#include <stdlib.h> 7#include <math.h> 8#include <string.h> 9#include <limits.h> 10 11#include <linux/types.h> 12#include <linux/pkt_sched.h> 13 14#define TABLESIZE 16384 15#define TABLEFACTOR NETEM_DIST_SCALE 16 17static double 18normal(double x, double mu, double sigma) 19{ 20 return .5 + .5*erf((x-mu)/(sqrt(2.0)*sigma)); 21} 22 23 24int 25main(int argc, char **argv) 26{ 27 int i, n; 28 double x; 29 double table[TABLESIZE+1]; 30 31 for (x = -10.0; x < 10.05; x += .00005) { 32 i = rint(TABLESIZE * normal(x, 0.0, 1.0)); 33 table[i] = x; 34 } 35 36 37 printf("# This is the distribution table for the normal distribution.\n"); 38 for (i = n = 0; i < TABLESIZE; i += 4) { 39 int value = (int) rint(table[i]*TABLEFACTOR); 40 if (value < SHRT_MIN) value = SHRT_MIN; 41 if (value > SHRT_MAX) value = SHRT_MAX; 42 43 printf(" %d", value); 44 if (++n == 8) { 45 putchar('\n'); 46 n = 0; 47 } 48 } 49 50 return 0; 51} 52