Sample Distribution¶
Particula-beta Index / Particula Beta / Data / Process / Sample Distribution
Auto-generated documentation for particula_beta.data.process.sample_distribution module.
get_samples_from_tabulated_pdf¶
Show source in sample_distribution.py:10
Draw random samples from a 1-D PDF that is supplied as tabulated values.
The function assumes x is strictly increasing and pdf ≥ 0 for all
points. If pdf is not already normalised, it is normalised internally.
Arguments¶
x- 1-D array of the abscissa values (e.g. particle radii in metres).pdf- 1-D array of the unnormalised probability-density values evaluated at eachx. Must be the same length asx.n_samples- Number of random variates to return.rng- Optionalnp.random.Generatorfor reproducibility.
Returns¶
1-D NumPy array of length n_samples containing samples drawn from the
distribution represented by (x, pdf).
Examples¶
# Mixture of two lognormals, tabulated on a log-spaced grid
import numpy as np
from scipy.stats import lognorm
x_grid = np.geomspace(1e-9, 5e-7, 10000)
modes = np.array([5e-8, 1e-7])
gsds = np.array([1.5, 2.0])
weights = np.array([1e9, 5e9])
pdf_vals = sum(
w * lognorm(s=np.log(gsd), scale=mode).pdf(x_grid)
for w, gsd, mode in zip(weights, gsds, modes)
)
radii = sample_from_tabulated_pdf(x_grid, pdf_vals, 10_000)
Signature¶
def get_samples_from_tabulated_pdf(
distribution_bins: NDArray[np.float64],
distribution_pdf: NDArray[np.float64],
number_of_samples: int,
random_generator: np.random.Generator | None = None,
) -> np.ndarray: ...