diff --git a/Lib/random.py b/Lib/random.py
index e6f6e4b..46a1b1f 100644
--- a/Lib/random.py
+++ b/Lib/random.py
@@ -44,6 +44,8 @@
 from math import log as _log, exp as _exp, pi as _pi, e as _e
 from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
 from math import floor as _floor
+from os import urandom as _urandom
+from binascii import hexlify as _hexlify
 
 __all__ = ["Random","seed","random","uniform","randint","choice","sample",
            "randrange","shuffle","normalvariate","lognormvariate",
@@ -59,13 +61,6 @@
 BPF = 53        # Number of bits in a float
 RECIP_BPF = 2**-BPF
 
-try:
-    from os import urandom as _urandom
-    from binascii import hexlify as _hexlify
-    _urandom(1)                         # verify that urandom is implemented
-except (ImportError, NotImplementedError):
-    _urandom = None
-
 
 # Translated by Guido van Rossum from C source provided by
 # Adrian Baddeley.  Adapted by Raymond Hettinger for use with
@@ -111,11 +106,11 @@
         """
 
         if a is None:
-            if _urandom is None:
+            try:
+                a = long(_hexlify(_urandom(16)), 16)
+            except NotImplementedError:
                 import time
                 a = long(time.time() * 256) # use fractional seconds
-            else:
-                a = long(_hexlify(_urandom(16)), 16)
 
         super(Random, self).seed(a)
         self.gauss_next = None
@@ -620,11 +615,11 @@
         """
 
         if a is None:
-            if _urandom is None:
+            try:
+                a = long(_hexlify(_urandom(16)), 16)
+            except NotImplementedError:
                 import time
                 a = long(time.time() * 256) # use fractional seconds
-            else:
-                a = long(_hexlify(_urandom(16)), 16)
 
         if not isinstance(a, (int, long)):
             a = hash(a)
@@ -759,14 +754,10 @@
 
     def random(self):
         """Get the next random number in the range [0.0, 1.0)."""
-        if _urandom is None:
-            raise NotImplementedError('Cannot find hardware entropy source')
         return (long(_hexlify(_urandom(7)), 16) >> 3) * RECIP_BPF
 
     def getrandbits(self, k):
         """getrandbits(k) -> x.  Generates a long int with k random bits."""
-        if _urandom is None:
-            raise NotImplementedError('Cannot find hardware entropy source')
         if k <= 0:
             raise ValueError('number of bits must be greater than zero')
         if k != int(k):
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index 139e8bf..f30ed1f 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -495,7 +495,11 @@
                       TestDistributions,
                       TestModule]
 
-    if random._urandom is not None:
+    try:
+        random.HardwareRandom().random()
+    except NotImplementedError:
+        pass
+    else:
         testclasses.append(HardwareRandom_TestBasicOps)
 
     test_support.run_unittest(*testclasses)
