Re: Generate a sequence of random numbers that sum up to 1?
- From: Anthony Liu <antonyliu2002@xxxxxxxxx>
- Date: Fri, 21 Apr 2006 21:49:06 -0700 (PDT)
OK, I actually just want to "manually" create Hidden
Markov Models by randomly generating the initial state
probabilities PI, the transition probabilities A and
the emission probabilities B, instead of learning such
statistics from a corpus. They have to be subject the
constraint that
sum(PI) = 1.0
sum(each row of A) = 1.0
sum(each row of B) = 1.0
Got an idea?
Thank you for your help. I guess I can use random()
instead of uniform(0,1) given your comments about
uniform. I did not know the uniform function until a
moment ago when I checked the python.org
documentation.
As a matter of fact, given that we have to specify the
number of states for an HMM, I would like to create a
specified number of random floating numbers whose sum
is 1.0.
--- Edward Elliott <nobody@xxxxxxxxx> wrote:
Anthony Liu wrote:
> But, I want the random numbers just generated sum
up
> to 1 .
This seems like an odd request. Might I ask what
it's for?
Generating random numbers in [0,1) that are both
uniform and sum to 1 looks
like an unsatisfiable task. Each number you
generate restricts the
possibilities for future numbers. E.g. if the first
number is 0.5, all
future numbers must be < 0.5 (indeed, must *sum* to
0.5). You'll end up
with a distribution increasingly skewed towards
smaller numbers the more
you generate. I can't imagine what that would be
useful for.
If that's not a problem, do this: generate the
numbers, add them up, and
divide each by the sum.
nums = [random.uniform(0,1) for x in range(0,100)]
sum = reduce(lambda x,y: x+y, nums)
norm = [x/sum for x in nums]
Of course now the numbers aren't uniform over [0,1)
anymore.
Also note that the sum of the normalized numbers
will be very close to 1,
but slightly off due to representation issues. If
that level of accuracy
matters, you might consider generating your rands as
integers and then
fp-dividing by the sum (or just store them as
integers/fractions).
--
http://mail.python.org/mailman/listinfo/python-list
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
.
- Follow-Ups:
- Re: Generate a sequence of random numbers that sum up to 1?
- From: Paul Rubin
- Re: Generate a sequence of random numbers that sum up to 1?
- From: Alex Martelli
- Re: Generate a sequence of random numbers that sum up to 1?
- References:
- Re: Generate a sequence of random numbers that sum up to 1?
- From: Edward Elliott
- Re: Generate a sequence of random numbers that sum up to 1?
- Prev by Date: Re: what has python added to programming languages? (lets be esoteric, shall we ; )
- Next by Date: Re: Can you create an instance of a subclass with an existing instance of the base class?
- Previous by thread: Re: Generate a sequence of random numbers that sum up to 1?
- Next by thread: Re: Generate a sequence of random numbers that sum up to 1?
- Index(es):
Relevant Pages
|