diff --git a/src/epics/util/lib/GaussianNoise.pm b/src/epics/util/lib/GaussianNoiseGenerator.pm
similarity index 76%
rename from src/epics/util/lib/GaussianNoise.pm
rename to src/epics/util/lib/GaussianNoiseGenerator.pm
index 60635fdf671337682645a03572c55120cf4195e9..4a03fde48deff674776691ef2071923bda571ff0 100644
--- a/src/epics/util/lib/GaussianNoise.pm
+++ b/src/epics/util/lib/GaussianNoiseGenerator.pm
@@ -1,11 +1,11 @@
-package CDS::GaussianNoise;
+package CDS::GaussianNoiseGenerator;
 use Exporter;
 @ISA = ('Exporter');
 
-#//     \page GaussianNoise Noise.pm
-#//     Documentation for GaussianNoise.pm
-#//     This GaussianNoise part generates gaussian random noise around
-#//     the given mean with the given standard deviation.
+#//     \page GaussianNoiseGenerator Noise.pm
+#//     Documentation for GaussianNoiseGenerator.pm
+#//     This GaussianNoiseGenerator part generates gaussian 
+#//     random noise with 0 mean and 1 standard deviation.
 #//     
 #//     
 #//
@@ -17,7 +17,7 @@ $init_code_printed = 0;
 1;
 
 sub partType {
-    return GaussianNoise;
+    return GaussianNoiseGenerator;
 }
 
 # Print Epics communication structure into a header file
@@ -46,7 +46,7 @@ static inline double gaussianRandomDouble( void )
 {
     uint64_t gaussRandomUint; 
     ligo_get_random_bytes(&gaussRandomUint, sizeof(gaussRandomUint));
-    return qnorm5( ((double)gaussRandomUint/0xFFFFFFFFFFFFFFFF), 0 /*mean*/, 1/*standard deviation*/, 1, 0);
+    return qnorm5_s( ((double)gaussRandomUint/0xFFFFFFFFFFFFFFFF), 1, 0);
 }
 
 END
@@ -87,6 +87,6 @@ sub frontEndInitCode {
 # Returns calculated code string
 sub frontEndCode {
     my ($i) = @_;
-    my $calcExp = "// GaussiaNoise\n";
-    $calcExp .= "\L$::xpartName[$i] = gaussianRandomDouble(" . . ", " . . ");\n";
+    my $calcExp = "// GaussiaNoiseGenerator\n";
+    $calcExp .= "\L$::xpartName[$i] " . "= gaussianRandomDouble();\n";
 }
diff --git a/src/include/util/random_bytes.h b/src/include/util/random_bytes.h
new file mode 100644
index 0000000000000000000000000000000000000000..c082da1b71f71532578c4bd2e5ee50fc28d82ea8
--- /dev/null
+++ b/src/include/util/random_bytes.h
@@ -0,0 +1,33 @@
+#ifndef LIGO_RAMDOM_BYTES_H
+#define LIGO_RAMDOM_BYTES_H
+
+#ifdef __KERNEL__
+
+#include <linux/random.h>
+
+#define ligo_get_random_bytes get_random_bytes
+
+static inline void ligo_get_random_bytes(void *buf, int nbytes)
+{
+    return get_random_bytes(buf, nbytes);
+}
+
+#else
+
+#include <sys/random.h>
+
+static inline void ligo_get_random_bytes(void *buf, int nbytes)
+{
+    getrandom(buf, nbytes, GRND_NONBLOCK);
+    //This can fail if the urandom source has not yet been initialized
+    return;
+}
+
+
+#endif
+
+
+
+
+
+#endif //LIGO_RAMDOM_BYTES_H