Marco Marco - 1 year ago 77
Python Question

Random Number following a certain distribution

I'm stuck with a problem. I have to implement an algorithm in python which needs a random number X such as Pr[X ≥ k] = 1/k. I don't know if already exists a distribution which can give me this exact value or if there is a way to implement this random generator using the simple random python library. Is there a way to do this? Thank you in advance for your help!

Answer Source

The easiest attempt is to make

X = 1.0 / random.random()

However, random.random() can have a value of zero, so this may result in a divide-by-zero error. The value can never be 1.0, according to the documentation, so use

X = 1.0 / (1.0 - random.random())

For this distribution,

Pr[X ≥ k] = Pr[1.0 - random.random() ≤ 1/k] = 1/k

Of course, all this assumes that k ≥ 1. Your condition makes no sense otherwise. I also assumed that X was to be a continuous random variable, from 1 to plus infinity. If X is to be an positive integer (thus k is also a positive integer), just take the floor of the formula I gave.