random number including 1 - i.e. [0,1]
Paul McGuire
ptmcg at austin.rr.com
Wed Jun 10 02:39:10 CEST 2009
On Jun 9, 4:33 pm, Esmail <ebo... at hotmail.com> wrote:
> Hi,
>
> random.random() will generate a random value in the range [0, 1).
>
> Is there an easy way to generate random values in the range [0, 1]?
> I.e., including 1?
>
Are you trying to generate a number in the range [0,n] by multiplying
a random function that returns [0,1] * n? If so, then you want to do
this using: int(random.random()*(n+1)) This will give equal chance of
getting any number from 0 to n.
If you had a function that returned a random in the range [0,1], then
multiplying by n and then truncating would give only the barest sliver
of a chance of giving the value n. You could try rounding, but then
you get this skew:
0 for values [0, 0.5) (width of 0.5)
1 for value [0.5, 1.5) (width of 1)
...
n for value [n-0.5, n] (width of ~0.50000000000000001)
Still not a uniform die roll. You have only about 1/2 the probability
of getting 0 or n as any other value.
If you want to perform a fair roll of a 6-sided die, you would start
with int(random.random() * 6). This gives a random number in the
range [0,5], with each value of the same probability. How to get our
die roll that goes from 1 to 6? Add 1. Thus:
die_roll = lambda : int(random.random() * 6) + 1
Or for a n-sided die:
die_roll = lambda n : int(random.random() * n) + 1
This is just guessing on my part, but otherwise, I don't know why you
would care if random.random() returned values in the range [0,1) or
[0,1].
-- Paul
More information about the Python-list
mailing list