While there are a lot of valid ways to do it, anything you do will change the outcome of the probability anyway. I'm assuming you are just looking to clamp the values.
Try this: http://codepad.org/NzlmSMN9 (it runs the code, too) ========================================== # Clamp a normal distribution outcome import random class applicant(): def __init__(self, x, y): self.randomnum = clamp(random.normalvariate(x, y), 0, 100) def clamp(input, min=0, max=100): """Clamps the input between min and max. if input < min, returns min min < input < max, returns input input > max, returns max Default: min = 0, max = 100.""" if input < min: return min elif input > max: return max else: return input if __name__ == "__main__": for num in range(10): print applicant(random.randint(0,100), random.randint(0,100)).randomnum ====================================================== Or you could just use randint() if you only wanted a linear distribution. PS: Thanks, btw, new to python myself also, and looking into this was cool. :] Best regards, Ching-Yun "Xavier" Ho, Technical Artist Contact Information Mobile: (+61) 04 3335 4748 Skype ID: SpaXe85 Email: cont...@xavierho.com Website: http://xavierho.com/ On Sat, Jun 20, 2009 at 3:20 PM, Vincent Davis <vinc...@vincentdavis.net>wrote: > I currently have something like this. > > class applicant(): > def __int__(self, x, y): > self.randomnum = normalvariate(x, y) > then other stuff > > x, y are only used to calculate self.randomnum and this seems to > work. But I want self.randomnum to be 0 <= randomnum <= 100. The only > way I can thing of to do this is is with a while statement and that > seems more complicated than necessary. I would really like to keep it > on one line. How would I do that? > > Thanks > Vincent Davis > -- > http://mail.python.org/mailman/listinfo/python-list >
-- http://mail.python.org/mailman/listinfo/python-list