diff --git a/generator/cper-generate.c b/generator/cper-generate.c
index b1b105b..2cee1e0 100644
--- a/generator/cper-generate.c
+++ b/generator/cper-generate.c
@@ -24,9 +24,6 @@
 void generate_cper_record(char **types, UINT16 num_sections, FILE *out,
 			  GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
-	//Initialise randomiser.
-	init_random(0);
-
 	//Generate the sections.
 	void *sections[num_sections];
 	size_t section_lengths[num_sections];
@@ -199,7 +196,7 @@
 	//If the section name is "unknown", simply generate a random bytes section.
 	int section_generated = 0;
 	if (strcmp(type, "unknown") == 0) {
-		length = generate_random_section(location, rand() % 256);
+		length = generate_random_section(location, ALL_VALID);
 		section_generated = 1;
 	} else {
 		//Function defined section, switch on the type, generate accordingly.
diff --git a/generator/gen-utils.c b/generator/gen-utils.c
index 46642b2..b299f7b 100644
--- a/generator/gen-utils.c
+++ b/generator/gen-utils.c
@@ -8,6 +8,22 @@
 #include <libcper/BaseTypes.h>
 #include <libcper/generator/gen-utils.h>
 
+UINT32 lfsr = 0xACE1u;
+
+void cper_rand_seed(UINT32 seed)
+{
+	lfsr = seed;
+}
+
+UINT32 cper_rand()
+{
+	lfsr |= lfsr == 0; // if x == 0, set x = 1 instead
+	lfsr ^= (lfsr & 0x0007ffff) << 13;
+	lfsr ^= lfsr >> 17;
+	lfsr ^= (lfsr & 0x07ffffff) << 5;
+	return lfsr;
+}
+
 //Generates a random section of the given byte size, saving the result to the given location.
 //Returns the length of the section as passed in.
 size_t generate_random_section(void **location, size_t size)
@@ -21,7 +37,7 @@
 {
 	UINT8 *bytes = malloc(size);
 	for (size_t i = 0; i < size; i++) {
-		bytes[i] = rand();
+		bytes[i] = cper_rand();
 	}
 	return bytes;
 }
@@ -36,13 +52,7 @@
 	*error_section &= 0x7FFFFF; //Reserved bits 23-63
 
 	//Ensure error type has a valid value.
-	*(start + 1) =
-		CPER_ERROR_TYPES_KEYS[rand() % (sizeof(CPER_ERROR_TYPES_KEYS) /
-						sizeof(int))];
-}
-
-//Initializes the random seed for rand() using the current time.
-void init_random()
-{
-	srand(1);
+	*(start + 1) = CPER_ERROR_TYPES_KEYS[cper_rand() %
+					     (sizeof(CPER_ERROR_TYPES_KEYS) /
+					      sizeof(int))];
 }
diff --git a/generator/sections/gen-section-arm.c b/generator/sections/gen-section-arm.c
index c181663..ded953d 100644
--- a/generator/sections/gen-section-arm.c
+++ b/generator/sections/gen-section-arm.c
@@ -21,8 +21,8 @@
 			    GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Set up for generation of error/context structures.
-	UINT16 error_structure_num = rand() % 4 + 1; //Must be at least 1.
-	UINT16 context_structure_num = rand() % 3 + 1;
+	UINT16 error_structure_num = cper_rand() % 4 + 1; //Must be at least 1.
+	UINT16 context_structure_num = cper_rand() % 3 + 1;
 	void *error_structures[error_structure_num];
 	void *context_structures[context_structure_num];
 	size_t context_structure_lengths[context_structure_num];
@@ -37,7 +37,7 @@
 	}
 
 	//Determine a random amount of vendor specific info.
-	size_t vendor_info_len = rand() % 16 + 4;
+	size_t vendor_info_len = cper_rand() % 16 + 4;
 
 	//Create the section as a whole.
 	size_t total_len = 40 + (error_structure_num * ARM_ERROR_INFO_SIZE);
@@ -55,7 +55,7 @@
 	*section_length = total_len;
 
 	//Error affinity.
-	*(section + 12) = rand() % 4;
+	*(section + 12) = cper_rand() % 4;
 
 	//Reserved zero bytes.
 	UINT32 *validation = (UINT32 *)section;
@@ -87,7 +87,7 @@
 	for (size_t i = 0; i < vendor_info_len; i++) {
 		//Ensure only ascii is used so we don't
 		// fail base64E
-		*cur_pos = rand() % 127 + 1;
+		*cur_pos = cper_rand() % 127 + 1;
 		cur_pos += 1;
 	}
 
@@ -106,7 +106,7 @@
 	*(error_info + 1) = ARM_ERROR_INFO_SIZE;
 
 	//Type of error.
-	UINT8 error_type = rand() % 3;
+	UINT8 error_type = cper_rand() % 3;
 	*(error_info + 4) = error_type;
 
 	//Reserved bits for error information.
@@ -162,7 +162,7 @@
 size_t generate_arm_context_info(void **location)
 {
 	//Initial length is 8 bytes. Add extra based on type.
-	UINT16 reg_type = rand() % 9;
+	UINT16 reg_type = cper_rand() % 9;
 	UINT32 reg_size = 0;
 
 	//Set register size.
diff --git a/generator/sections/gen-section-ccix-per.c b/generator/sections/gen-section-ccix-per.c
index e648cba..2547d8d 100644
--- a/generator/sections/gen-section-ccix-per.c
+++ b/generator/sections/gen-section-ccix-per.c
@@ -16,7 +16,7 @@
 {
 	//Create a random length for the CCIX PER log.
 	//The log attached here does not necessarily conform to the CCIX specification, and is simply random.
-	int log_len = (rand() % 5 + 1) * 32;
+	int log_len = (cper_rand() % 5 + 1) * 32;
 
 	//Create random bytes.
 	int size = 16 + log_len;
diff --git a/generator/sections/gen-section-cxl-component.c b/generator/sections/gen-section-cxl-component.c
index 615a152..6c4e60e 100644
--- a/generator/sections/gen-section-cxl-component.c
+++ b/generator/sections/gen-section-cxl-component.c
@@ -16,7 +16,7 @@
 {
 	//Create a random length for the CXL component event log.
 	//The logs attached here do not necessarily conform to the specification, and are simply random.
-	int log_len = rand() % 64;
+	int log_len = cper_rand() % 64;
 
 	//Create random bytes.
 	int size = 32 + log_len;
diff --git a/generator/sections/gen-section-cxl-protocol.c b/generator/sections/gen-section-cxl-protocol.c
index 1918d68..e171c7f 100644
--- a/generator/sections/gen-section-cxl-protocol.c
+++ b/generator/sections/gen-section-cxl-protocol.c
@@ -16,15 +16,15 @@
 {
 	//Create a random length for the CXL DVSEC and CXL error log.
 	//The logs attached here do not necessarily conform to the specification, and are simply random.
-	int dvsec_len = rand() % 64;
-	int error_log_len = rand() % 64;
+	int dvsec_len = cper_rand() % 64;
+	int error_log_len = cper_rand() % 64;
 
 	//Create random bytes.
 	int size = 116 + dvsec_len + error_log_len;
 	UINT8 *bytes = generate_random_bytes(size);
 
 	//Set CXL agent type.
-	int cxl_agent_type = rand() % 2;
+	int cxl_agent_type = cper_rand() % 2;
 	*(bytes + 8) = cxl_agent_type;
 
 	//Set reserved areas to zero.
diff --git a/generator/sections/gen-section-dmar.c b/generator/sections/gen-section-dmar.c
index 7c2a85f..4062338 100644
--- a/generator/sections/gen-section-dmar.c
+++ b/generator/sections/gen-section-dmar.c
@@ -25,10 +25,10 @@
 	*(reserved + 1) = 0;
 
 	//Set expected values.
-	*(bytes + 4) = rand() % 0xC;   //Fault reason.
-	*(bytes + 5) = rand() % 2;     //Access type.
-	*(bytes + 6) = rand() % 2;     //Address type.
-	*(bytes + 7) = rand() % 2 + 1; //Architecture type.
+	*(bytes + 4) = cper_rand() % 0xC;   //Fault reason.
+	*(bytes + 5) = cper_rand() % 2;	    //Access type.
+	*(bytes + 6) = cper_rand() % 2;	    //Address type.
+	*(bytes + 7) = cper_rand() % 2 + 1; //Architecture type.
 
 	//Set return values, exit.
 	*location = bytes;
diff --git a/generator/sections/gen-section-firmware.c b/generator/sections/gen-section-firmware.c
index 6ec4b88..bf8a7ee 100644
--- a/generator/sections/gen-section-firmware.c
+++ b/generator/sections/gen-section-firmware.c
@@ -25,10 +25,10 @@
 	}
 
 	//Set expected values.
-	*(bytes + 1) = 2;    //Revision, referenced version of spec is 2.
+	*(bytes + 1) = 2;	  //Revision, referenced version of spec is 2.
 	UINT64 *record_id = (UINT64 *)(bytes + 8);
-	*record_id = 0;	     //Record ID, should be forced to NULL.
-	*bytes = rand() % 3; //Record type.
+	*record_id = 0;		  //Record ID, should be forced to NULL.
+	*bytes = cper_rand() % 3; //Record type.
 
 	//Set return values, exit.
 	*location = bytes;
diff --git a/generator/sections/gen-section-generic.c b/generator/sections/gen-section-generic.c
index 54de52e..4d25559 100644
--- a/generator/sections/gen-section-generic.c
+++ b/generator/sections/gen-section-generic.c
@@ -33,7 +33,7 @@
 	for (int i = 0; i < 128; i++) {
 		UINT8 *byte = start_byte + 24 + i;
 		//Ensure only ascii is used
-		*byte = rand() % 127 + 1;
+		*byte = cper_rand() % 127 + 1;
 
 		//Null terminate last byte.
 		if (i == 127) {
diff --git a/generator/sections/gen-section-ia32x64.c b/generator/sections/gen-section-ia32x64.c
index 647f77d..8507d1b 100644
--- a/generator/sections/gen-section-ia32x64.c
+++ b/generator/sections/gen-section-ia32x64.c
@@ -20,8 +20,8 @@
 				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Set up for generation of error/context structures.
-	UINT16 error_structure_num = rand() % 4 + 1;
-	UINT16 context_structure_num = rand() % 4 + 1;
+	UINT16 error_structure_num = cper_rand() % 4 + 1;
+	UINT16 context_structure_num = cper_rand() % 4 + 1;
 	void *error_structures[error_structure_num];
 	void *context_structures[context_structure_num];
 	size_t context_structure_lengths[context_structure_num];
@@ -99,7 +99,7 @@
 	//Create a random type of error structure.
 	EFI_GUID *guid = (EFI_GUID *)error_structure;
 	UINT64 *check_info = (UINT64 *)(error_structure + 24);
-	int error_structure_type = rand() % 4;
+	int error_structure_type = cper_rand() % 4;
 	switch (error_structure_type) {
 	//Cache
 	case 0:
@@ -149,16 +149,16 @@
 size_t generate_ia32x64_context_structure(void **location)
 {
 	//Initial length is 16 bytes. Add extra based on type.
-	int reg_type = rand() % 8;
+	int reg_type = cper_rand() % 8;
 	int reg_size = 0;
 
 	//Set register size.
 	if (reg_type == 2) {
-		reg_size = 92;			  //IA32 registers.
+		reg_size = 92;			       //IA32 registers.
 	} else if (reg_type == 3) {
-		reg_size = 244;			  //x64 registers.
+		reg_size = 244;			       //x64 registers.
 	} else {
-		reg_size = (rand() % 5 + 1) * 32; //Not table defined.
+		reg_size = (cper_rand() % 5 + 1) * 32; //Not table defined.
 	}
 
 	//Create structure randomly.
diff --git a/generator/sections/gen-section-memory.c b/generator/sections/gen-section-memory.c
index a45f0ce..866fe0c 100644
--- a/generator/sections/gen-section-memory.c
+++ b/generator/sections/gen-section-memory.c
@@ -30,7 +30,7 @@
 	*(bytes + 73) &= ~0x1C; //Extended bits 2-4
 
 	//Fix values that could be above range.
-	*(bytes + 72) = rand() % 16; //Memory error type
+	*(bytes + 72) = cper_rand() % 16; //Memory error type
 
 	//Fix error status.
 	create_valid_error_section(bytes + 8);
@@ -61,8 +61,8 @@
 	*(bytes + 63) = 0; //Reserved byte 63
 
 	//Fix values that could be above range.
-	*(bytes + 61) = rand() % 16; //Memory error type
-	*(bytes + 62) = rand() % 2;  //Status
+	*(bytes + 61) = cper_rand() % 16; //Memory error type
+	*(bytes + 62) = cper_rand() % 2;  //Status
 
 	//Fix error status.
 	create_valid_error_section(bytes + 8);
diff --git a/generator/sections/gen-section-nvidia.c b/generator/sections/gen-section-nvidia.c
index a06f545..83b8845 100644
--- a/generator/sections/gen-section-nvidia.c
+++ b/generator/sections/gen-section-nvidia.c
@@ -26,8 +26,6 @@
 		"MCF",	     "GPU-STATUS",    "GPU-CONTNMT",   "SMMU",
 	};
 
-	init_random();
-
 	//Create random bytes.
 	int numRegs = 6;
 	size_t size = offsetof(EFI_NVIDIA_ERROR_DATA, Register) +
@@ -45,7 +43,8 @@
 	nvidia_error->Severity %= 4;
 
 	//Signature.
-	int idx_random = rand() % (sizeof(signatures) / sizeof(signatures[0]));
+	int idx_random =
+		cper_rand() % (sizeof(signatures) / sizeof(signatures[0]));
 	strncpy(nvidia_error->Signature, signatures[idx_random],
 		sizeof(nvidia_error->Signature) - 1);
 	nvidia_error->Signature[sizeof(nvidia_error->Signature) - 1] = '\0';
diff --git a/generator/sections/gen-section-pci-bus.c b/generator/sections/gen-section-pci-bus.c
index ca0f255..c0e59c0 100644
--- a/generator/sections/gen-section-pci-bus.c
+++ b/generator/sections/gen-section-pci-bus.c
@@ -33,7 +33,7 @@
 
 	//Fix values that could be above range.
 	UINT16 *error_type = (UINT16 *)(bytes + 16);
-	*error_type = rand() % 8;
+	*error_type = cper_rand() % 8;
 
 	//Fix error status.
 	create_valid_error_section(bytes + 8);
diff --git a/generator/sections/gen-section-pci-dev.c b/generator/sections/gen-section-pci-dev.c
index 6deac59..3982d63 100644
--- a/generator/sections/gen-section-pci-dev.c
+++ b/generator/sections/gen-section-pci-dev.c
@@ -15,8 +15,8 @@
 				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Generate how many register pairs will be attached to this section.
-	UINT32 num_memory_pairs = rand() % 4;
-	UINT32 num_io_pairs = rand() % 4;
+	UINT32 num_memory_pairs = cper_rand() % 4;
+	UINT32 num_io_pairs = cper_rand() % 4;
 	UINT32 num_registers = num_memory_pairs + num_io_pairs;
 
 	//Create random bytes.
diff --git a/generator/sections/gen-section-pcie.c b/generator/sections/gen-section-pcie.c
index db9dfd9..2111d28 100644
--- a/generator/sections/gen-section-pcie.c
+++ b/generator/sections/gen-section-pcie.c
@@ -36,14 +36,14 @@
 	*(bytes + 39) = 0;     //Device ID byte 15
 
 	//Set expected values.
-	int minor = rand() % 128;
-	int major = rand() % 128;
+	int minor = cper_rand() % 128;
+	int major = cper_rand() % 128;
 	*version = int_to_bcd(minor);
 	*version |= int_to_bcd(major) << 8;
 
 	//Fix values that could be above range.
 	UINT32 *port_type = (UINT32 *)(bytes + 8);
-	*port_type = PCIE_PORT_TYPES[rand() %
+	*port_type = PCIE_PORT_TYPES[cper_rand() %
 				     (sizeof(PCIE_PORT_TYPES) / sizeof(int))];
 
 	//Set return values, exit.
