Metadata-Version: 2.1
Name: CombinatorialProbability
Version: 0.0.2
Summary: A POC for a combinatorial probability library using integer partitions as one example
Home-page: https://github.com/pypa/combinatorialprobability
Author: Stephen DeSalvo
Author-email: stephendesalvo@gmail.com
License: Creative Commons Attribution-Noncommercial-Share Alike license
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown

# Why?
This library was created to perform operations like iterating or random sampling of combinatorial structures like integer partition, permutations, set partitions etc.

# What?
Right now only **integer partitions** are implemented, minimally.  One can randomly sample using several different methods.

# Example

    from CombinatorialProbability import IntegerPartition
	ip = IntegerPartition()
	ip.fit(weight=10, make_array=True, make_table=True, make_tilt=True)
	ip.sampling(size=10, method='rejection')

Right now sample returns a tuple, the first element is the sample, the second element is the number of iterations before a successful sample was found, by default it is a list of all 1s if a method is not a rejection method.

Other arguments for method are:
* pdcdsh -- Probabilistic divide-and-conquer deterministic second half
* table_only -- The (tabular) recursive method of Nijenhuis--Wilf
* array_only -- The (array) recursive method of Nijenhuis--Wilf
* pdc-recursive -- Probabilistic divide-and-conquer combined with the table method of Nijenhuis--Wilf

Additional parameters for a given method should be in the form of a dictionary method_params = {} also input to the sample() method.

	ip.sampling(size=10, method='pdcdsh')
	ip.sampling(size=10, method='table_only')
	ip.sampling(size=10, method='array_only')
	ip.sampling(size=10, method='pdc-recursive', method_params={'rows': 3})



