RandProfileNoisyDiscreteUniform
- class poisson_approval.RandProfileNoisyDiscreteUniform(types, d_type_fixed_share=None, **kwargs)[source]
A random factory of noisy discrete profiles (
ProfileNoisyDiscrete) following the uniform distribution.- Parameters
types (iterable) – These types will have a variable share. They can be noisy discrete types, e.g.
('abc', 0.9, 0.01), or discrete types, e.g.('abc', 0.9)(in which case the argument noise must be given in the additional parameters), or weak orders, e.g.'a~b>c'.d_type_fixed_share (dict, optional) – A dictionary. For each entry
type: fixed_share, this type will have at least this fixed share. The total must be lower or equal to 1.kwargs – These additional arguments will be passed directly to
ProfileNoisyDiscrete.
Examples
Basic usage:
>>> initialize_random_seeds() >>> rand_profile = RandProfileNoisyDiscreteUniform(types=[('abc', 0.9, 0.01), 'a~b>c']) >>> profile = rand_profile() >>> print(profile) <abc 0.9 ± 0.01: 0.5488135039273248, a~b>c: 0.45118649607267525> (Condorcet winner: a)
Or, equivalently:
>>> initialize_random_seeds() >>> rand_profile = RandProfileNoisyDiscreteUniform(types=[('abc', 0.9), 'a~b>c'], noise=0.01) >>> profile = rand_profile() >>> print(profile) <abc 0.9 ± 0.01: 0.5488135039273248, a~b>c: 0.45118649607267525> (Condorcet winner: a)
Using the optional parameters:
>>> rand_profile = RandProfileNoisyDiscreteUniform( ... types=[('abc', 0.9, 0.01), 'a~b>c'], d_type_fixed_share={'b>a~c': 0.5}, ... voting_rule=PLURALITY) >>> profile = rand_profile() >>> print(profile) <abc 0.9 ± 0.01: 0.35759468318620974, a~b>c: 0.14240531681379026, b>a~c: 0.5> (Condorcet winner: b) (Plurality)
For more examples, cf.
RandSimplexUniform.