diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 66c39d6..dae7442 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -35,6 +35,10 @@
 
 -v is incompatible with -g and does not compare test output files.
 
+-r randomizes test execution order. You can use --randseed=int to provide a
+int seed value for the randomizer; this is useful for reproducing troublesome
+test orders.
+
 -T turns on code coverage tracing with the trace module.
 
 -D specifies the directory where coverage files are put.
@@ -191,7 +195,8 @@
 def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
          exclude=False, single=False, randomize=False, fromfile=None,
          findleaks=False, use_resources=None, trace=False, coverdir='coverage',
-         runleaks=False, huntrleaks=False, verbose2=False, print_slow=False):
+         runleaks=False, huntrleaks=False, verbose2=False, print_slow=False,
+         random_seed=None):
     """Execute a test suite.
 
     This also parses command-line options and modifies its behavior
@@ -209,9 +214,10 @@
     files beginning with test_ will be used.
 
     The other default arguments (verbose, quiet, generate, exclude,
-    single, randomize, findleaks, use_resources, trace, coverdir, and
-    print_slow) allow programmers calling main() directly to set the
-    values that would normally be set by flags on the command line.
+    single, randomize, findleaks, use_resources, trace, coverdir,
+    print_slow, and random_seed) allow programmers calling main()
+    directly to set the values that would normally be set by flags
+    on the command line.
     """
 
     support.record_original_stdout(sys.stdout)
@@ -222,12 +228,15 @@
                                     'findleaks', 'use=', 'threshold=', 'trace',
                                     'coverdir=', 'nocoverdir', 'runleaks',
                                     'huntrleaks=', 'verbose2', 'memlimit=',
-                                    'debug', 'start=', "nowindows"
+                                    'debug', 'start=', 'nowindows',
+                                    'randseed=',
                                     ])
     except getopt.error as msg:
         usage(msg)
 
     # Defaults
+    if random_seed is None:
+        random_seed = random.randrange(10000000)
     if use_resources is None:
         use_resources = []
     debug = False
@@ -255,6 +264,8 @@
             print_slow = True
         elif o in ('-r', '--randomize'):
             randomize = True
+        elif o == '--randseed':
+            random_seed = int(a)
         elif o in ('-f', '--fromfile'):
             fromfile = a
         elif o in ('-l', '--findleaks'):
@@ -389,6 +400,8 @@
         except ValueError:
             print("Couldn't find starting test (%s), using all tests" % start)
     if randomize:
+        random.seed(random_seed)
+        print("Using random seed", random_seed)
         random.shuffle(tests)
     if trace:
         import trace
