Skip to main content

Utilities for randomly sampling from statistical distributions

Project description

Simple Random Distribution Sampling

SRDS is mainly a wrapper around scipy's statistical functions (scipy.stats). It makes it easier to sample from parameterized distributions and provides tools that accelerate random sampling.


Truncation or rejection sampling

srds adds several classes that make it easier to utilize scipy statistical distributions. To sample from a log-normal distribution with σ = 0.25, but truncate at 0.5 and 2, the BoundRejectionSampler helps:

from srds import ParameterizedDistribution as PDist, BoundRejectionSampler

dist = PDist.lognorm(0.25)
sampler = BoundRejectionSampler(dist, 0.5, 2)

x = sampler.sample(10)

Fast sampling of single values

calling dist.rvs on a scipy statistical distribution is computationally expensive. This is problematic for code that does something like:

# will be slow (calls dist.rvs 10000 times)
for i in range(10000):
    x = dist.sample()
    # ...

srds provides a BufferedSampler that draws a larger sample from a distribution, and subsequently returns from that sample.

from srds import BufferedSampler

dist = BufferedSampler(dist)

# will be much faster! (calls dist.rvs only 10 times with a sample size of 1k)
for i in range(10000):
    x = dist.sample()
    # ...

Sampling from populations

You can use the PopulationSampler to draw from a discrete set, and also bias the sampling with weights.

from srds import PopulationSampler

sampler = PopulationSampler(['a', 'b', 'c'], [8, 1, 1])
sampler.sample() # will return 'a' 8 out of 10 times on average
sampler.sample(10) # returns a list containing items from ['a', 'b', 'c'] in random order

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for srds, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size srds-0.1.0-py3-none-any.whl (7.5 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size srds-0.1.0.tar.gz (6.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page