# Make a number more probable to result from random

This is overkill for you, but it's good to know an actual method for generating a random number with any probability density function (pdf).

You can do that by subclassing scipy.stat.rv_continuous, provided you do it correctly. You will have to have a normalized pdf (so that its integral is 1). If you don't, numpy will automatically adjust the range for you. In this case, your pdf has a value of 2/3 for x<0.5, and 4/3 for x>0.5, with a support of [0, 1) (support is the interval over which it's nonzero):

```
import scipy.stats as spst
import numpy as np
import matplotlib.pyplot as plt
import ipdb
def pdf_shape(x, k):
if x < 0.5:
return 2/3.
elif 0.5 <= x and x < 1:
return 4/3.
else:
return 0.
class custom_pdf(spst.rv_continuous):
def _pdf(self, x, k):
return pdf_shape(x, k)
instance = custom_pdf(a=0, b=1)
samps = instance.rvs(k=1, size=10000)
plt.hist(samps, bins=20)
plt.show()
```

That's a fitting name!

Just do a little manipulation of the inputs. First set `x`

to be in the range from `0`

to `1.5`

.

```
x = numpy.random.uniform(1.5)
```

`x`

has a `2/3`

chance of being greater than `0.5`

and `1/3`

chance being smaller. Then if `x`

is greater than `1.0`

, subtract `.5`

from it

```
if x >= 1.0:
x = x - 0.5
```