def _random(self, key):
        """Generates a pseudorandom value between 0 and 1 (inclusive)"""

        if hasattr(key, "encode"):
            key = key.encode('ascii')

        value = (zlib.crc32(key, self.seed) & MAX_VALUE)

        return value * INV_MAX_VALUE