diff --git a/netem/normal.c b/netem/normal.c
index e69de29..e6683db 100644
--- a/netem/normal.c
+++ b/netem/normal.c
@@ -0,0 +1,56 @@
+/*
+ * Normal distribution table generator
+ * Taken from the uncopyrighted NISTnet code.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <limits.h>
+
+#include <linux/types.h>
+#include <linux/pkt_sched.h>
+
+#define TABLESIZE 16384
+#define TABLEFACTOR NETEM_DIST_SCALE
+
+static double
+normal(double x, double mu, double sigma)
+{
+	return .5 + .5*erf((x-mu)/(sqrt(2.0)*sigma));
+}
+
+int
+main(int argc, char **argv)
+{
+	double x, *table;
+	int i, n;
+
+	table = calloc(sizeof(double), TABLESIZE+1);
+	if (!table) {
+		fprintf(stderr, "Not enough memory\n");
+		return 1;
+	}
+
+
+	for (x = -10.0; x < 10.05; x += .00005) {
+		i = (int)rint(TABLESIZE*normal(x, 0.0, 1.0));
+		table[i] = x;
+	}
+
+	
+	printf("# This is the distribution table for the normal distribution.\n");
+	for (i = n = 0; i < TABLESIZE; i += 4) {
+		int value = (int) rint(table[i]*TABLEFACTOR);
+		if (value < SHRT_MIN) value = SHRT_MIN;
+		if (value > SHRT_MAX) value = SHRT_MAX;
+
+		printf(" %d", value);
+		if (++n == 8) {
+			putchar('\n');
+			n = 0;
+		}
+	}
+	free(table);
+	return 0;
+}
