# pg_rand_ext
This module makes the function for generating random values in pgbench available as a user-defined function.
It implements random number generation functions according to each of the exponential, gaussian, and zipfian distributions available in pgbench.
## How to build
The common way to build extension modules in PostgreSQL.
It has been tested with PostgreSQL v14 and above.
```
$ make USE_PGXS=1 install
```
## How to use
When you execute CREATE EXTENSION, the rand_ext schema is created and the functions are registered in it.
```
$ psql -c "CREATE EXTENSION pg_rand_ext"
$ psql -c "SELECT rand_ext.random_exponential(1,1000,0.3)"
random_exponential
--------------------
54
(1 row)
```
## Functions
| Function | Args | Return | Desc |
| ------------- | ------------- | ------------- | ------------- |
| random_exponential | lb bigint, ub bigint, param dp | bigint | Return a random value between lb and ub with param of the exponential distribution |
| random_gaussian | lb bigint, ub bigint, param dp | bigint | Return a random value between lb and ub with param of the gaussian distribution |
| random_zipfian | lb bigint, ub bigint, param dp | bigint | Return a random value between lb and ub with param of the zipfian distribution |
It works the same as the built-in function of pgbench.
Please see more detail: https://www.postgresql.org/docs/current/pgbench.html#PGBENCH-FUNCTIONS