Simulate Lomax distribution I want to simulate the Lomax / Pareto type 2 distribution from a standard uniform distribution in python. I managed to transform it into a Pareto distribution, but I'm not sure how to transform it from there into the Lomax distribution
    class continous:
    def uniform(self, **kwargs):
        return uniform(**kwargs)

    def lomax(self, theta,alpha,size):
        u = self.uniform(size=size)
        x=(theta)*(1-u)**(-1/alpha)
        return x

    x=continous().lomax(theta=5, alpha=10, size=1000)


 A: Simply invert the distribution function.  It's efficient.
Here are the details.

A standardized Lomax distribution with shape parameter $\alpha\gt 0$ has distribution function (CDF)
$$F(z;\alpha) = 1 - \frac{1}{(1+z)^{\alpha}},\quad x \ge 0.$$
Its quantile function is thereby straightforward to find as
$$F^{-1}(q;\alpha) = \left(1 - q\right)^{-1/\alpha}-1,\quad 0 \lt q \le 1$$
(and $F^{-1}(0;\alpha) = 0$).  
Applying this function to a uniform random variable $U$ (supported between $0$ and $1$) generates a standard Lomax variate $Z,$ because for any $z\gt 0,$ the definitions (of CDF and uniform distribution) give
$$\Pr(Z \le z) = \Pr(F^{-1}(U;\alpha)\le z) = \Pr(U \le F(z;\alpha)) = F(z;\alpha),$$
showing that such a $Z$ has the desired Lomax distribution.

More generally, the Lomax distribution family includes a scale factor $\lambda\gt 0.$  This just means that to generate such a variable $X$, generate $Z$ from the corresponding standardized Lomax distribution and multiply that result by $\lambda.$  Thus, to generate random variates for given $\alpha\gt 0$ and $\lambda \gt 0,$

Generate a uniform variate $U$ (between $0$ and $1$) and set $X = \lambda\left(\left(1 - U\right)^{-1/\alpha}-1\right).$

