diff --git a/scapy/volatile.py b/scapy/volatile.py
index c49bb2c31b72c214715df05c84f52b0e711bcbe6..7f4d78fd4c70a22a24086a45f17bab9ae0f0c7e0 100644
--- a/scapy/volatile.py
+++ b/scapy/volatile.py
@@ -75,13 +75,13 @@ class RandField(VolatileValue):
     pass
 
 class RandNum(RandField):
+    """Instances evaluate to random integers in selected range"""
     min = 0
     max = 0
     def __init__(self, min, max):
         self.min = min
         self.max = max
     def _fix(self):
-        # XXX: replace with sth that guarantee unicity
         return random.randrange(self.min, self.max+1)
 
 class RandNumGamma(RandField):
@@ -105,43 +105,76 @@ class RandNumExpo(RandField):
     def _fix(self):
         return self.base+int(round(random.expovariate(self.lambd)))
 
-class RandSeq(RandNum):
+class RandDraw(RandNum):
+    """Instances evaluate to integer sampling without replacement from the given interval"""
     def __init__(self, min, max):
         self.seq = RandomSequence(min,max)
     def _fix(self):
         return self.seq.next()
 
-class RandByte(RandSeq):
+class RandByte(RandNum):
     def __init__(self):
-        RandSeq.__init__(self, 0, 2L**8-1)
+        RandNum.__init__(self, 0, 2L**8-1)
 
-class RandSByte(RandSeq):
+class RandSByte(RandNum):
     def __init__(self):
-        RandSeq.__init__(self, -2L**7, 2L**7-1)
+        RandNum.__init__(self, -2L**7, 2L**7-1)
 
-class RandShort(RandSeq):
+class RandShort(RandNum):
     def __init__(self):
-        RandSeq.__init__(self, 0, 2L**16-1)
+        RandNum.__init__(self, 0, 2L**16-1)
 
-class RandSShort(RandSeq):
+class RandSShort(RandNum):
     def __init__(self):
-        RandSeq.__init__(self, -2L**15, 2L**15-1)
+        RandNum.__init__(self, -2L**15, 2L**15-1)
 
-class RandInt(RandSeq):
+class RandInt(RandNum):
     def __init__(self):
-        RandSeq.__init__(self, 0, 2L**32-1)
+        RandNum.__init__(self, 0, 2L**32-1)
 
-class RandSInt(RandSeq):
+class RandSInt(RandNum):
     def __init__(self):
-        RandSeq.__init__(self, -2L**31, 2L**31-1)
+        RandNum.__init__(self, -2L**31, 2L**31-1)
 
-class RandLong(RandSeq):
+class RandLong(RandNum):
     def __init__(self):
-        RandSeq.__init__(self, 0, 2L**64-1)
+        RandNum.__init__(self, 0, 2L**64-1)
 
-class RandSLong(RandSeq):
+class RandSLong(RandNum):
     def __init__(self):
-        RandSeq.__init__(self, -2L**63, 2L**63-1)
+        RandNum.__init__(self, -2L**63, 2L**63-1)
+
+class RandDrawByte(RandDraw):
+    def __init__(self):
+        RandDraw.__init__(self, 0, 2L**8-1)
+
+class RandDrawSByte(RandDraw):
+    def __init__(self):
+        RandDraw.__init__(self, -2L**7, 2L**7-1)
+
+class RandDrawShort(RandDraw):
+    def __init__(self):
+        RandDraw.__init__(self, 0, 2L**16-1)
+
+class RandDrawSShort(RandDraw):
+    def __init__(self):
+        RandDraw.__init__(self, -2L**15, 2L**15-1)
+
+class RandDrawInt(RandDraw):
+    def __init__(self):
+        RandDraw.__init__(self, 0, 2L**32-1)
+
+class RandDrawSInt(RandDraw):
+    def __init__(self):
+        RandDraw.__init__(self, -2L**31, 2L**31-1)
+
+class RandDrawLong(RandDraw):
+    def __init__(self):
+        RandDraw.__init__(self, 0, 2L**64-1)
+
+class RandDrawSLong(RandDraw):
+    def __init__(self):
+        RandDraw.__init__(self, -2L**63, 2L**63-1)
 
 class RandChoice(RandField):
     def __init__(self, *args):