Source code for mapof.roommates.cultures.urn

import numpy as np
from mapof.roommates.cultures._utils import convert


[docs] def generate_urn_votes( num_agents: int = None, alpha: int = 0.1, **kwargs ) -> list[list[int]]: """ Generates a list of votes based on the urn model. Parameters ---------- num_agents : int Number of agents. alpha : float, optional Parameter for the urn model. Default is 0.1. **kwargs Additional parameters for customization. Returns ------- list[list[int]] A list of votes. """ votes = np.zeros([num_agents, num_agents], dtype=int) urn_size = 1. for j in range(num_agents): rho = np.random.uniform(0, urn_size) if rho <= 1.: votes[j] = np.random.permutation(num_agents) else: votes[j] = votes[np.random.randint(0, j)] urn_size += alpha return convert(votes)