RandStrategyOrdinalUniform

class poisson_approval.RandStrategyOrdinalUniform(profile=None, voting_rule=None, d_ranking_fixed_strategy=None)[source]

A random factory of ordinal strategies (StrategyOrdinal) following the uniform distribution.

Parameters
  • profile (Profile, optional) – The attached profile.

  • voting_rule (str, optional) – The voting rule. Possible values are APPROVAL, PLURALITY and ANTI_PLURALITY. Default: the same voting rule as profile if a profile is specified, APPROVAL otherwise.

  • d_ranking_fixed_strategy (dict) – Key: ranking. Value: fixed strategy. Cf. examples below.

Examples

Basic usage:

>>> initialize_random_seeds()
>>> rand_strategy = RandStrategyOrdinalUniform()
>>> strategy = rand_strategy()
>>> print(strategy)
<abc: ab, acb: ac, bac: b, bca: bc, cab: ac, cba: bc>

Specify a profile:

>>> from poisson_approval import ProfileOrdinal
>>> profile = ProfileOrdinal({'abc': 0.75, 'bac': 0.25})
>>> rand_strategy = RandStrategyOrdinalUniform(profile=profile)
>>> strategy = rand_strategy()
>>> print(strategy)
<abc: ab, bac: ab> ==> a, b

Specify some fixed strategies:

>>> rand_strategy = RandStrategyOrdinalUniform(
...     d_ranking_fixed_strategy={'abc': 'a', 'acb': 'a', 'bac': 'b', 'bca': 'b'})
>>> print(rand_strategy())
<abc: a, acb: a, bac: b, bca: b, cab: ac, cba: c>
>>> print(rand_strategy())
<abc: a, acb: a, bac: b, bca: b, cab: ac, cba: bc>
>>> print(rand_strategy())
<abc: a, acb: a, bac: b, bca: b, cab: ac, cba: c>
>>> print(rand_strategy())
<abc: a, acb: a, bac: b, bca: b, cab: ac, cba: bc>
>>> print(rand_strategy())
<abc: a, acb: a, bac: b, bca: b, cab: c, cba: c>