diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst
index 55072f24fa..3e0aec34e7 100644
--- a/docs/source/usersguide/input.rst
+++ b/docs/source/usersguide/input.rst
@@ -404,6 +404,14 @@ sub-elements and can be set to either "off" or "on".
*Default*: on
+``seed`` Element
+----------------
+
+The ``seed`` element is used to set the seed used for the linear congruential
+pseudo-random number generator.
+
+ *Default*: 1
+
``source`` Element
------------------
diff --git a/src/global.F90 b/src/global.F90
index c64ebedc9d..5fadb2e1af 100644
--- a/src/global.F90
+++ b/src/global.F90
@@ -211,6 +211,9 @@ module global
! Message used in message/warning/fatal_error
character(MAX_LINE_LEN) :: message
+ ! Random number seed
+ integer(8) :: seed = 1_8
+
! Problem type
integer :: problem_type = PROB_CRITICALITY
diff --git a/src/initialize.F90 b/src/initialize.F90
index 3d3719b48d..3275c1c282 100644
--- a/src/initialize.F90
+++ b/src/initialize.F90
@@ -72,15 +72,15 @@ contains
call header("INITIALIZATION", level=1)
end if
- ! Initialize random number generator
- call initialize_prng()
-
! set up dictionaries
call create_dictionaries()
! Read XML input files
call read_input_xml()
+ ! Initialize random number generator
+ call initialize_prng()
+
! Set up universe structures
call prepare_universes()
diff --git a/src/input_xml.F90 b/src/input_xml.F90
index c1257855e1..2837fd1ebf 100644
--- a/src/input_xml.F90
+++ b/src/input_xml.F90
@@ -68,6 +68,7 @@ contains
cross_sections_ = ""
verbosity_ = 0
energy_grid_ = "union"
+ seed_ = 0_8
! Parse settings.xml file
call read_xml_file_settings_t(filename)
@@ -112,6 +113,9 @@ contains
call fatal_error()
end if
+ ! Copy random number seed if specified
+ if (seed_ > 0) seed = seed_
+
! Energy grid methods
select case (energy_grid_)
case ('nuclide')
diff --git a/src/random_lcg.F90 b/src/random_lcg.F90
index 674be52122..694885c013 100644
--- a/src/random_lcg.F90
+++ b/src/random_lcg.F90
@@ -49,7 +49,9 @@ contains
subroutine initialize_prng()
- prn_seed0 = 1_8
+ use global, only: seed
+
+ prn_seed0 = seed
prn_seed = prn_seed
prn_mult = 2806196910506780709_8
prn_add = 1_8
diff --git a/src/xml-fortran/templates/settings_t.xml b/src/xml-fortran/templates/settings_t.xml
index 4b450f5724..dbe8bd6226 100644
--- a/src/xml-fortran/templates/settings_t.xml
+++ b/src/xml-fortran/templates/settings_t.xml
@@ -32,6 +32,7 @@
+