On 8/28/17, Leam Hall <leamh...@gmail.com> wrote: > On 08/28/2017 11:40 AM, Dennis Lee Bieber wrote: > > ... a bunch of good stuff ... > > I'm (re-)learning python and just trying make sure my function works. > Not at the statistical or cryptographic level. :) > > Thanks! > > Leam > -- > https://mail.python.org/mailman/listinfo/python-list >
I am not sure what is best practice but I would use sys.exit to propagate failure (for better scripting possibility). For example: if __name__ == "__main__": import doctest import sys sys.exit(doctest.testmod()[0]) But maybe I am wrong and non zero exit status is just for errors in code? --- If you don't need something at scientific level (which is hard, see: https://www.random.org/analysis/ ) you could probably use fact that random sequences are "hard" to compress. For example something like this could help -> >>> import zlib >>> A = [my_thing() for i in range(100)] >>> 50 < len(zlib.compress(bytes(A))) < 70 True But be careful!! Other randint parameters would need other limit values! # for randint(1,6) you have distribution of lengths like this collections.Counter(len(zlib.compress(bytes(random.randint(1,6) for i in range(100)))) for j in range(100000)) Counter({55: 1, 56: 46, 57: 834, 58: 7349, 59: 31035, 60: 42884, 61: 16434, 62: 1397, 63: 20}) # but for randint(1,16) you have distribution like this! collections.Counter(len(zlib.compress(bytes(random.randint(1,16) for i in range(100)))) for j in range(100000)) Counter({71: 4, 72: 412, 73: 11291, 74: 27392, 75: 28293, 76: 29103, 77: 3296, 78: 209}) So maybe it help you, maybe not :) -- https://mail.python.org/mailman/listinfo/python-list