diff --git a/scapy/volatile.py b/scapy/volatile.py
index 116bf8601c7f58d4cde52be0c08372dc08db4ca4..152eb5bf19a2a64ffefcbfef322f3a2bd68bfc75 100644
--- a/scapy/volatile.py
+++ b/scapy/volatile.py
@@ -97,6 +97,12 @@ class RandNum(RandField):
     def _fix(self):
         return random.randrange(self.min, self.max+1)
 
+    def __int__(self):
+        return int(self._fix())
+
+    def __str__(self):
+        return str(self._fix())
+
 class RandNumGamma(RandField):
     def __init__(self, alpha, beta):
         self.alpha = alpha
@@ -229,6 +235,9 @@ class RandTermString(RandString):
         self.term = term
     def _fix(self):
         return RandString._fix(self)+self.term
+
+    def __str__(self):
+        return str(self._fix())
     
     
 
@@ -517,6 +526,7 @@ class RandSingNum(RandSingularity):
             if not mn <= i <= mx:
                 sing.remove(i)
         self._choice = list(sing)
+        self._choice.sort()
         
 
 class RandSingByte(RandSingNum):
@@ -607,6 +617,9 @@ class RandSingString(RandSingularity):
                          r"\\myserver\share",
                          "foo.exe:",
                          "foo.exe\\", ]
+
+    def __str__(self):
+        return str(self._fix())
                              
 
 class RandPool(RandField):
diff --git a/test/regression.uts b/test/regression.uts
index 506adfc4c296091fc6c210ddf9be7c27338eac99..7739a02bd81b488f79e74e73d93da3768a841b3b 100644
--- a/test/regression.uts
+++ b/test/regression.uts
@@ -7413,10 +7413,11 @@ print r6 == "2001:0db8::9ccb"
 
 random.seed(0x2807)
 rm = RandMAC() 
-rm == "12:5a:ef:f5:91:44"
+rm == "d2:12:e4:5a:db:ef"
 
 rm = RandMAC("00:01:02:03:04:0-7")
-rm == "00:01:02:03:04:01"
+rm == "00:01:02:03:04:05"
+
 
 = RandOID
 
@@ -7440,22 +7441,25 @@ print re == "vmuvr @ 906  g"
 
 random.seed(0x2807)
 cb = CorruptedBytes("ABCDE", p=0.5)
-sane(cb) == "pB..E"
+sane(str(cb)) == ".BCD)"
 
 cb = CorruptedBits("ABCDE", p=0.2)
-sane(cb) == "E.Kl`"
+sane(str(cb)) == "ECk@Y"
 
 = Rand*
 
 random.seed(0x2807)
 rs = RandSingNum(-28, 07)
-print rs == -7
+rs == 3
 
+random.seed(0x2807)
 rss = RandSingString()
 rss == "CON:"
 
+random.seed(0x2807)
 rek = RandEnumKeys({'a': 1, 'b': 2})
-str(rek) == 'b'
+rek == 'b'
 
+random.seed(0x2807)
 rts = RandTermString(4, "scapy")
-sane(str(rts)) == "[...scapy"
+sane(str(rts)) == "...[scapy"