Jeffrey Barish wrote: > If you take the difference between two uniformly distributed random > variables, the probability density function forms an isosceles triangle > centered at 0. Take the absolute value of that variable and the pdf is a > straight line with maximum value at 0 tapering to 0 at max. Thus, > > z = abs(randint(0, max) - randint(0, max)) > > ought to do the trick.
It's elegant :) I've noticed something interesting in my test: the value 0 appears less often than other values (which behave as they should). I wrote this test script: from random import randint map = {} for x in xrange(11): map[x] = 0 for a in xrange(500): x = abs(randint(0, 10) - randint(0, 10)) map[x] += 1 print map and here are some results: > python a.py {0: 49, 1: 66, 2: 72, 3: 73, 4: 64, 5: 55, 6: 40, 7: 36, 8: 18, 9: 18, 10: 9} > python a.py {0: 34, 1: 90, 2: 77, 3: 61, 4: 56, 5: 52, 6: 42, 7: 34, 8: 27, 9: 15, 10: 12} > python a.py {0: 33, 1: 80, 2: 84, 3: 62, 4: 52, 5: 46, 6: 51, 7: 31, 8: 35, 9: 16, 10: 10} > python a.py {0: 50, 1: 100, 2: 69, 3: 53, 4: 63, 5: 47, 6: 41, 7: 26, 8: 30, 9: 11, 10: 10} > python a.py {0: 31, 1: 84, 2: 70, 3: 70, 4: 74, 5: 50, 6: 38, 7: 28, 8: 31, 9: 15, 10: 9} > python a.py {0: 43, 1: 101, 2: 79, 3: 66, 4: 41, 5: 59, 6: 37, 7: 30, 8: 26, 9: 15, 10: 3} > python a.py {0: 44, 1: 108, 2: 74, 3: 50, 4: 53, 5: 54, 6: 39, 7: 34, 8: 28, 9: 13, 10: 3} > python a.py {0: 42, 1: 72, 2: 70, 3: 72, 4: 61, 5: 54, 6: 41, 7: 36, 8: 30, 9: 15, 10: 7} If I ignore the case when the delta is 0, it works fine, but I don't understand why should the 0-case happen less often than others.
signature.asc
Description: OpenPGP digital signature
-- http://mail.python.org/mailman/listinfo/python-list