I'm surprised noone has pursued a course of subtraction rather than
division. Say you want 10 numbers:

>>> s = 1.0
>>> n = []
>>> for x in xrange(9):
...     value = random.random() * s
...     n.append(value)
...     s -= value
...
>>> n.append(s)
>>> n
[0.7279111122901516, 0.082128708606867745, 0.0080516733577621798,
0.12122060245902817, 0.0034460458833209676, 0.0021046234724371184,
0.054109424914363845, 0.00035750970249204185, 0.00051175075536832372,
0.00015854855820800087]
>>> sum(n)
1.0


Either:
 1) Just because they're *ordered* doesn't mean they're not *random*,
or
 2) You all now know why I'm not a mathematician. ;)

It seems to me that the only constraint on the randomness of my results
is the OP's constraint: that they sum to 1. I'd be fascinated to learn
if and why that wouldn't work.


Robert Brewer
System Architect
Amor Ministries
[EMAIL PROTECTED]

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to